Jasmine stubRequest不传递传递的字符串

时间:2015-01-21 09:35:01

标签: javascript json jasmine

我是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

为什么字符串被破坏了?我该如何解决这个问题?

1 个答案:

答案 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,可能很快就会使用它,谢谢。