【发布时间】:2016-01-11 10:25:56
【问题描述】:
我有在发出 AJAX 请求后接收 XHR 对象的代码:
$.get('/url')
.then(function(data) {
var jsonData = data.responseJson;
var responseText = data.responseText;
/* ... */
}).fail(err) {
/* ... */
});
当我在我的实时网站上使用它时,responseJson 和 responseText 都被定义了。但是当我尝试使用sinon.fakeServer 模拟服务器响应时,没有responseJson 对象:
var server = sinon.fakeServer.create();
server.respondWith("POST", "/url", function(request) {
request.respond(400, {'Content-Type': 'application/json', JSON.stringify({
foo: 1,
bar: 2
}));
});
/* ... */
// Then in my code
$.get('/url')
.then(function(data) {
var jsonData = data.responseJson; //undefined
var responseText = data.responseText; //defined
/* ... */
}).fail(err) {
/* ... */
});
如何让 sinon.js 创建正确的 responseJson 对象,以便我可以在代码中使用 responseJson 并且仍然通过测试?
【问题讨论】:
-
我在尝试测试错误响应时遇到了同样的问题。似乎在任何 400-500 响应代码上,
responseText始终是一个空字符串。
标签: javascript json xmlhttprequest sinon