chrome Jasmine を使用した拡張機能をテストしようとしていますが、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
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)
}
}
},
...
}
Jasmine APIは、2.xバージョンの「シリーズ」で少し変更されています。
最新のドキュメントによると、count()
メソッドを使用する必要があります:
expect(kamikaze.closeIdleTab.calls.count()).toBe(3);
私もあなたのコードでそれを試しました、そしてすべてのテストは成功しました。
代替構文(失敗時の出力が少し良い)は
expect(kamikaze.closeIdleTab).toHaveBeenCalledTimes(3);