Tiruan panggilan ke server dengan menggunakan jasmine

Saya ingin meniru panggilan ajax ke server dengan menggunakan jasmine dan juga menguji objek yang Ditangguhkan selesai dan gagal.

Saat ini, saya benar-benar melakukannya, jadi mencoba mengirim banyak panggilan ke server.

Bagaimana cara memperbaiki kode berikut

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

Berikut adalah kode tentang doSubmitForm

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

person Lorraine Bernard    schedule 13.09.2012    source sumber
comment
Agar ini berfungsi, 'submitForm' Anda perlu mengembalikan objek jQuery yang ditangguhkan (seperti jqXHR dll)?   -  person Karthik    schedule 13.09.2012
comment
@Karthik Saya kira ya, ada ide bagaimana cara membuatnya?   -  person Lorraine Bernard    schedule 13.09.2012
comment
Anda mungkin bisa menggunakan 'andCallFake' dan membuatnya mengembalikan objek yang ditangguhkan jquery. Posting itu sebagai jawaban di bawah ini.   -  person Karthik    schedule 14.09.2012


Jawaban (1)


Dalam kasus yang gagal, saya pikir masalahnya adalah karena panggilan tidak mengembalikan objek jQuery-Deferred.

Untuk memvalidasi teori ini, Anda mungkin bisa mencoba sesuatu seperti ini:

var tmpDefObj = $.Deferred();

spyOn(backendController, 'submitForm').andCallFake(function() {return tmpDefObj;});
person Karthik    schedule 13.09.2012
comment
terima kasih atas saran Anda. berhasil.. ngomong-ngomong sebenarnya saya punya masalah lain terkait ini. Cara menguji selesai dan gagal Ditangguhkan Obyek dengan menggunakan melati. Adakah yang tahu cara memperbaikinya? - person Lorraine Bernard; 14.09.2012
comment
Tentu. saya akan melihat pertanyaan Anda yang lain hari ini. - person Karthik; 14.09.2012