如何用茉莉花测试一个帖子?

时间:2013-06-17 15:47:44

标签: javascript jquery jasmine jquery-deferred

我正在尝试使用jasmine在javascript上测试一个函数,但是我遇到了一个问题我没有找到任何信息来测试$ .post或$ .get函数,因为我正在使用完成($ .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(function(data){
 exitoso(data);
}

或者也可以像以下一样工作:     .done(       exitoso      );

感谢AndreasKöberle的回答。

1 个答案:

答案 0 :(得分: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()