使用sinon.fakeServer时,responseJson不存在

时间:2015-10-13 15:23:40

标签: javascript json xmlhttprequest sinon

我有代码在发出AJAX请求后收到XHR对象:

$.get('/url')
  .then(function(data) {
    var jsonData = data.responseJson;
    var responseText = data.responseText;
    /* ... */
  }).fail(err) {
    /* ... */
  });

当我在我的实际网站上使用此功能时,responseJsonresponseText都已定义。但是当我尝试使用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并仍然通过我的测试?

1 个答案:

答案 0 :(得分:0)

看起来您正在使用虚假服务器的400(错误请求)而不是200(OK)进行响应。这是故意的吗?从远程服务器获取错误请求时,您是否有responseJson可用?

如果故意不是400:只需将400更改为200。