我将 sinon js 的假服务器与 Jasmine 一起用于 UT/IT。我已经设置了 server.autorespond = true。(即使在减少 server.autoRespondAfter 中的 ms 后也进行检查)
问题:服务器响应请求后不会触发回调(我可以检查服务器请求的日志和服务器对象本身以查看响应文本)。Jasmine 检查成功或失败 callback.CalledOnce 失败。
在以下情况下不会发生此问题:我在设置 server.respondWith(..) 后使用 server.respond() 并且在服务器响应后正确触发了我的回调。Jasmine 通过了成功或失败回调的检查。CalledOnce。
我的理解是自动响应使服务器在收到异步请求时自动响应,包括调用适当的回调?我还需要使用 server.respond 吗?
谢谢。
代码片段:读取所需的 json 文件并将其作为服务器响应发送。读取的json文件是同步调用(async false)。
this.server = sinon.fakeServer.create();
this.server.autoRespond = true;
sinon.FakeXMLHttpRequest.useFilters = true;
sinon.FakeXMLHttpRequest.addFilter(function (method, url, async, username, password) {
// Don't fake json file read requests
if (url == inputUrl) {
return true;
}
});
this.resultfile = this.readJsonFile(inputUrl);
this.server.respondWith("GET", endUrl,
[200, { "Content-Type": "application/json" }, this.resultfile]);
console.log (this.server.requests); // Logs all requests so far
在我的茉莉花规格中,我有
var callbacks = [sinon.spy(),sinon.spy()];
// call the above sinon code and then make the test call below
jQuery.ajax({
url: '/abc',
success: callbacks[0]
});
// this fails, though I can see the server responded to the request.
expect(callbacks[0].calledOnce).toBeTruthy();