Monday, June 3, 2024
181
rated 0 times [  185] [ 4]  / answers: 1 / hits: 20690  / 11 Years ago, tue, january 7, 2014, 12:00:00

I'm trying to test my chrome extension with Jasmine but I'm having trouble getting calls.length and callCount to behave as expected. Both cases return undefined.



I've included a sample of the code and the spec. Here's the rest of the code if it helps: https://github.com/DruRly/kamikaze/tree/closeIdleTab



How to reproduce:




  • git clone https://github.com/DruRly/kamikaze/tree/closeIdleTab

  • cd kamikaze

  • open SpecRunner.html



spec/kamikazeSpec.js



describe(kamikaze, function() {
describe(closeIdleTabs, function(){
it(calls closeIdleTab for each tab received, function(){
spyOn(kamikaze, 'closeIdleTab');

kamikaze.closeIdleTabs([1,2,3]);
expect(kamikaze.closeIdleTab.calls.length).toBe(3);
})
})
})


src/kamikaze.js



kamikaze = {
...

closeIdleTabs: function(tabs){
tabs.forEach(function(tab){
test.closeIdleTab(tab);
})
},

closeIdleTab: function(tab){
if(tabTimeStamps[tab.id]){
var secondsSinceUpdated = getSecondsSinceUpdated(tab.id)
if(secondsSinceUpdated > (minutesUntilIdle * 60)){
chrome.tabs.remove(tab.id)
}
}
},

...
}

More From » google-chrome-extension

 Answers
4

The Jasmine APIs have changed a bit in the 2.x version series.

According to the latest docs you should use the count() method:



expect(kamikaze.closeIdleTab.calls.count()).toBe(3);


I also tried that with your code and all tests pass successfully.


[#73336] Sunday, January 5, 2014, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
lonnier

Total Points: 621
Total Questions: 113
Total Answers: 98

Location: Nepal
Member since Mon, Jan 4, 2021
3 Years ago
;