spyon javascript google-chrome-extension jasmine bdd jasmine2.0

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.