Jasmineを使用して、特定のオブジェクトが作成され、それらに対してメソッドが呼び出されるかどうかをテストしています。
フリップカウンターオブジェクトを作成し、それらに対してsetValueメソッドを呼び出すjQueryウィジェットがあります。フリップカウンターのコードは次のとおりです:https ://bitbucket.org/cnanney/apple-style-flip-counter/src/13fd00129a41/js/flipcounter.js
フリップカウンターは、以下を使用して作成されます。
var myFlipCounter = new flipCounter("counter", {inc: 23, pace: 500});
フリップカウンターが作成され、setValueメソッドが呼び出されることをテストしたいと思います。私の問題は、これらのオブジェクトが作成される前であっても、これらのオブジェクトをどのようにスパイするのかということです。コンストラクターをスパイして偽のオブジェクトを返しますか?サンプルコードは本当に役に立ちます。ご協力いただきありがとうございます!:)
アップデート:
私は次のようにflipCounterをスパイしようとしました:
myStub = jasmine.createSpy('myStub');
spyOn(window, 'flipCounter').andReturn(myStub);
//expectation
expect(window.flipCounter).toHaveBeenCalled();
次に、flipCounterによるsetValue呼び出しのテスト:
spyOn(myStub, 'setValue');
//expectation
expect(myStub.setValue).toHaveBeenCalled();
briefCounterを初期化するための最初のテストは問題ありませんが、setValue呼び出しをテストするために取得するのは、「setValue()メソッドが存在しません」というエラーだけです。私はこれを正しい方法でやっていますか?ありがとう!