3

javascript で jasmine を使用して関数をテストしようとしていますが、$.post または $.get 関数をテストするための情報が見つからないという問題があります。また、done ($. deferred) は非同期であり、それを処理する方法がわかりません。コードは次のとおりです

function registrarUsuario(cel, eMail, nombre){
$.post(url, {
       phone_number : cel,
       email : eMail,
       name : nombre
       }).done(exitoso(data))} 

問題は、jasmine で $.post または $.get 関数をテストする方法と、jqXHR の done 関数を使用する方法です。

関数 exitoso(data) は次のとおりです。

function exitoso(data){
navigator.notification.alert('User register',
                             alertDismmissed(nombre, eMail, cel),
                             'Sucess');}

データErrorReferenceでエラーが発生した理由ですが、コード $.post(...).done を次のように変更する必要がありました

.done(function(data){
 exitoso(data);
}

または次のように機能することもできます: .done( exitoso );

回答してくれた Andreas Köberle に感謝します。

4

1 に答える 1

3

したがって$.post、解決された遅延をスパイして返すことができます。

var dfr = new $.Deferred();
dfr.resolve({data: "data"})
jasmine.spyOn($, 'post').andReturn(dfr)
registrarUsuario()

別の解決策は、sinonJs のfakeServerを使用することです。

this.server = sinon.fakeServer.create();
this.server.respondWith('{data: "data"}');
server.autoRespond = true;
registrarUsuario()
于 2013-06-17T20:17:08.057 に答える