javascript - spyon - Jasmine calls.length y callCount no están definidos
sinon spy (2)
La sintaxis alternativa (con una salida un poco más agradable en caso de fallo) sería
expect(kamikaze.closeIdleTab).toHaveBeenCalledTimes(3);
Estoy intentando probar mi extensión de Chrome con Jasmine pero tengo problemas para que calls.length
y callCount
comporten como se esperaba. Ambos casos regresan undefined
.
He incluido una muestra del código y la especificación. Aquí está el resto del código si ayuda: https://github.com/DruRly/kamikaze/tree/closeIdleTab
Cómo reproducirse:
-
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)
}
}
},
...
}
Las API de Jasmine han cambiado un poco en la "serie" de la versión 2.x.
De acuerdo con los últimos documentos , debe usar el método count()
:
expect(kamikaze.closeIdleTab.calls.count()).toBe(3);
También probé con tu código y todas las pruebas pasaron con éxito.