2017-11-23 2 views
2

私はjavascript関数deleteSomething()を持っています。その中にjQueryのload()関数が呼び出されています。JasmineでjQuery load()が呼び出されているかどうかをテストするには?

function deleteSomething(a, b){ 
    deleteIt(a, b, function(success){ 
     if(success){ 
      $("#table").load(...);   
     } 
    }) 
} 

は、今私は、負荷()が呼び出されているかどうかを確認するためにジャスミンとdeleteSomething()をテストしたいです。しかし、入手しましたError: Expected a spy, but got Function

私はジャスミンを初めて使いましたが、どうすればよいですか?

+0

あなたはどのように 'load'をスパイしましたか?コードを共有しますか? – Thaadikkaaran

+0

@ Thaadikkaaran私はコードを更新しました。ありがとう。 –

+0

@ HMRの答えはあなたにとって役に立ちます – Thaadikkaaran

答えて

2

jQueryをスパイする必要がありますprototype、それはここにあります:$.fn

describe("deleteSomething", function() { 
    it("Should call load", function() { 
     //$.fn is where the load function is defined 
     // $("...") returns a new jQuery.fn instance that has load function 
     // from jQuery.fn.prototype 
     spyOn($.fn, 'load'); 
     $("#anything").load(); 
     expect($.fn.load).toHaveBeenCalled(); 
    }); 
}); 

オブジェクト自身のメンバーとプロトタイプのメンバー(継承)の違いについていくつかのより多くの情報がhereを見つけることができます:

だからあなたのコードは次のようになります。

+0

正しい要素に対してload()が呼び出されているかどうかをテストしますか? –

+1

@JennySaqiurila 'expect($ .fn.load.calls.argsFor(0)[0])。toBe("#table ");' https://stackoverflow.com/a/21873859/1641941 – HMR

+0

情報のためのThx!私はそれが次のように動作するように管理していました: '{$ fn.load.calls.mostRecent()。object [0])。toBe(document.getElementById(" table "));' –

関連する問題