【发布时间】:2015-10-10 20:35:04
【问题描述】:
我用过Qunit和Sinon,
self.urlRegex = /^(.*?)\/xxx\/xxxx\/xxxxx$/;
self.server = sinon.fakeServer.create();
self.server.respondWith(self.urlRegex, [200, {"Content-Type":"application/json"}, JSON.stringify(list)]);
sinon.spy(jQuery, "ajax");
$.ajax( {
type : "GET",
url : "/xxx/xxxx/xxxxx",
dataType : "json"
})
.done(function (data) {
self.names = data.data;
});
self.server.respond();
self.server.restore();
jQuery.ajax.restore();
现在,如果我尝试获取名称值,它将返回 undefined 而不是 list.data,看起来完成的部分没有发生。
有什么方法可以获取值并在名称中设置?
【问题讨论】:
-
你如何/在哪里尝试调用它? Ajax 是异步的,对吧?!
-
@A.Wolff self.server.respond();
-
我不知道
sinon,但是ajax默认是异步的,所以你在ajax请求完成之前调用self.server.respond(); -
@A.Wolff Sinon 是一个模拟 ajax 调用的间谍代理。 sinon 中的 repond() 使所有排队的异步请求都收到响应。
标签: jquery ajax gruntjs qunit sinon