2

ジャスミンの関数のスパイに関する他の質問を見ましたが、そこで疑問が解決されませんでした。スクリプトandCallThroughで元の関数を追跡するために使用するつもりです。srcこれは私が持っているものです:

describe("My Test to spy :", function() {                                       
    var mySpy = jasmine.createSpy(window, "login");                             
    beforeEach(function(){
        mySpy();
    });

    it("Expects login() will be called", function(){                               
      expect(mySpy).toHaveBeenCalled();                                         
    });    
});

このテストは、スパイが呼び出されているためパスしますか? 関数の元の実装ではありません。したがって、使用するmySpy.andCallThrough()とエラーが発生します。ドキュメントはすべて、オブジェクトの連鎖とメソッドに関するものです。関数には何もありません。助けが要る。

4

1 に答える 1

4

問題は、createSpyの代わりに使用することですspyOn。新しいスパイを作成するため、呼び出す関数がcreateSpyないため使用できません。andCallThroughを使用spyOnすると、既存の関数がスパイに置き換えられ、古い関数がスパイに保存されます。したがって、使用andCallThroughすると、この古いメソッドが呼び出されます。

使用できますcreateSpyが、名前と元の関数を渡す必要があります。

jasmine.createSpy('someName', window.login)

`spyOn' を使用するときは、関数と関数の名前を保持するオブジェクトを渡す必要があります。

jasmine.spyOn(window, 'login')
于 2013-07-25T17:40:55.680 に答える