3

jasmineを使用してサーバーへのajax呼び出しをモックし、 doneとfailのDeferredObjectをテストしたいと思います。

現在、私は実際にそれらを実行しているため、サーバーに大量の呼び出しを送信しようとしています。

次のコードを次のように修正するにはどうすればよいですか?

mySpy = spyOn(backendController, 'submitForm').andCallThrough(); 
// it makes a real call to the server

mySpy = spyOn(backendController, 'submitForm'); 
// it does not make a real call to the server but I get the following error
// Cannot call method 'done' of undefined

これがdoSubmitFormに関するコードです

doSubmitForm: function (backendController) {
  backendController.submitForm(message.val())
        .done(this.onSuccess)
        .fail(this.onError);
});
4

1 に答える 1

3

失敗した場合、問題は呼び出しがjQuery-Deferredオブジェクトを返さないことが原因だと思います。

この理論を検証するには、おそらく次のようなことを試すことができます。

var tmpDefObj = $.Deferred();

spyOn(backendController, 'submitForm').andCallFake(function() {return tmpDefObj;});
于 2012-09-13T20:32:17.877 に答える