2012-09-13 102 views
3

我想通過使用茉莉花嘲笑ajax調用服務器,也測試完成和失敗延遲對象嘲笑使用茉莉花的服務器的呼叫

目前,我正在做他們的真實,因此試圖發送一堆電話到服務器。

我應該如何解決下面的代碼

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); 
}); 
+0

爲了這個工作,你的「submitForm」需要返回一個jQuery Deferred對象(如jqXHR等)? – Karthik

+0

@Karthik我想是的,任何想法如何使它? –

+0

你可以使用'andCallFake'並讓它返回一個jQuery延遲對象。將其作爲下面的答案發布。 – Karthik

回答

3

在失敗的情況下,代碼,我認爲這個問題是由於電話無法返回jQuery-Deferred對象。

爲了驗證這一理論,你也許可以嘗試這樣的事:

var tmpDefObj = $.Deferred(); 

spyOn(backendController, 'submitForm').andCallFake(function() {return tmpDefObj;}); 
+0

感謝您的建議。它的作品..順便說一句,我有另一個與此有關的問題。 [如何使用茉莉花測試完成和失敗的延遲對象](http://stackoverflow.com/questions/12080087/how-to-test-the-done-and-fail-deferred-object-by-using-jasmine )。任何想法如何解決它? –

+0

當然。今天晚些時候我會看看你的另一個問題。 – Karthik