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(exisoso);

感谢 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 回答