我正在尝试使用Jasmine测试我的chrome扩展,但是我无法获得calls.length
并按callCount
预期行事.这两种情况下返回undefined
.
我已经包含了代码和规范的示例.如果有帮助的话,这是代码的其余部分:https://github.com/DruRly/kamikaze/tree/closeIdleTab
如何重现:
git clone https://github.com/DruRly/kamikaze/tree/closeIdleTab
cd kamikaze
open SpecRunner.html
投机/ 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) } } }, ... }
gkalpak.. 54
Jasmine API在2.x版"系列"中有所改变.
根据最新的文档,您应该使用该count()
方法:
expect(kamikaze.closeIdleTab.calls.count()).toBe(3);
我也尝试使用您的代码,所有测试都成功通过.
Jasmine API在2.x版"系列"中有所改变.
根据最新的文档,您应该使用该count()
方法:
expect(kamikaze.closeIdleTab.calls.count()).toBe(3);
我也尝试使用您的代码,所有测试都成功通过.
备用语法(失败时输出更好)
expect(kamikaze.closeIdleTab).toHaveBeenCalledTimes(3);