2014-01-07 10 views
31

クロム拡張子をJasmineでテストしようとしていますが、calls.lengthcallCountが予期したとおりに動作するのに問題があります。どちらの場合もundefinedが返されます。ジャスミンのcalls.lengthとcallCountは定義されていません

私はコードのサンプルと仕様を含めました。それは場合に役立ちます。ここのコードの残りの部分だ:

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) 
     } 
    } 
    }, 

    ... 
} 
+1

+10であろう。ほとんどの人は、最初の2行(文字通り)後に停止していたでしょう! (関連コード、完全なコードへのリンクと問題を再現するステップ - これはとても簡単な答えです): – gkalpak

+0

ありがとう@ExpertSystem!私が狂ったように感じる。私はまだかもしれませんが、私は旧式のドキュメントも見ていました:) – Dru

+0

リポジトリが依然として参考になっているといいですね。 – Brant

答えて

51

ジャスミンのAPIは、バージョン2.x "シリーズ" のビットを変更しました。あなたがcount()メソッドを使用する必要がありますlatest docsによると
は :

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

私はまた、あなたのコードとすべてのテストで正常に合格することを試みました。 (失敗したビットよりよい出力を持つ)

1

代替構文は、質問の品質とフォーマットについて

expect(kamikaze.closeIdleTab).toHaveBeenCalledTimes(3); 
関連する問題