我是Jasmine的新手,我有以下代码:
jasmine.Ajax.stubRequest(url).andReturn({
"status": 200,
"contentType": 'text/json',
"responseText": '{"entities": [1]}'
});
客户端代码的行如下:
JSON.parse(response);
其中response
为'{"entities": [1]}'
。但是当运行jasmine时会将响应发送为:
Object{entities: [1]} // console.log(response)
因此parse
在客户端代码中失败,但例外情况为:
SyntaxError: JSON Parse error: Unexpected identifier "object" in client.js
为什么字符串被破坏了?我该如何解决这个问题?
答案 0 :(得分:1)
查看代码时可以在mock-ajax第267行看到:
responseValue: function() {
switch(this.responseType) {
case null:
case "":
case "text":
return this.readyState >= 3 ? this.responseText : "";
case "json":
return JSON.parse(this.responseText);
case "arraybuffer":
throw unconvertibleResponseTypeMessage('arraybuffer');
case "blob":
throw unconvertibleResponseTypeMessage('blob');
case "document":
return this.responseXML;
}
似乎在json jasmine mock-ajax的情况下,allready解析了对象。
所以我猜测如果删除内容类型,您将首先获得在responseText中设置的确切字符串:
jasmine.Ajax.stubRequest(url).andReturn({
"status": 200,
"responseText": '{"entities": [1]}'
});
不知道模拟ajax,可能很快就会使用它,谢谢。