我正在尝试使用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的回答。
答案 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()