我有代码在发出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
并仍然通过我的测试?
答案 0 :(得分:0)
看起来您正在使用虚假服务器的400(错误请求)而不是200(OK)进行响应。这是故意的吗?从远程服务器获取错误请求时,您是否有responseJson可用?
如果故意不是400:只需将400更改为200。