2017-03-22 4 views
0

ジャスミンを習って、次のテストが有効かどうか疑問に思っていますか?もしそうでなければ、なぜ誰かが説明することができますか?私は数多くのチュートリアルを読んできましたが、以下のようなテストを正しく書くことができない理由を理解するのに役立つ良い説明は見つかりませんでした。ジャスミンで関数が呼び出されたかどうかを調べるためにスパイが必要ですか?

// spec 
describe("when cart is clicked", function() { 
    it("should call the populateNotes function", function() { 
     $("#show-cart").click() 
     expect(populateNotes()).toHaveBeenCalled(); 
    }) 
}) 

// code 
$("#show-cart").click(function() { 
    populateNotes(); 
}) 
+0

'(populateNotesは())'関数を呼び出し、それが(populateNotesを)期待し 'でなければなりません期待' – 4castle

+0

は、彼らは同様にジャスミンのいくつかの他のビットを逃しています。 –

答えて

0

あなたは2つのことを行う必要があります。まず、クリックする前に機能を偵察する必要があります。通常、オブジェクトのメンバーであるこのような関数を偵察します。 populateNotesはどこに定義されていますか?何とかそれを参照する必要があります。私はそれが重複しないと思う4castle @

// This might work, if the function is defined globally. 
spyOn(window, 'populateNotes'); 

// Then do your action that should result in that func being called 
$("#show-cart").click(); 

// Then your expectation. The expectation should be on the function 
// itself, not on the result. So no parens. 
expect(window.populateNotes).toHaveBeenCalled(); 
+0

うーん...それはうまくいかなかった、オブジェクトは 'ウィンドウ'ではない可能性がありますか?私は文字通りそこに座っているだけの機能を持っています...窓は正しくなければなりません... – james

+0

あなたは窓に関数を定義して、それをテスト可能にすることができます。 'function populateNotes(...')の代わりに 'window.populateNotes = function(...' –

+0

)関数を明示的に定義してもテストが成功することはありませんでしたが、ローカルサーバで...他のアイデアは – james

関連する問題