1

我正在尝试测试一个 api (sails.js),但我无法使用 JSON.parse 返回的数据

我有这个测试:

describe('when requesting resource /coin', function () {

it ('should request "/Coin" on server and return it', function (done) {
  supertest(sails.express.app)
    .get('/Coin')
    .expect('Content-Type', /json/)
    .expect(200, done)
    .end(function(err, res) {
      var result = JSON.parse(JSON.stringify(res.text));
      assert.equal(result.cash, 1000);
      done();
    })
  })
 })

在这里您可以看到结果如何:

未捕获的类型错误:对象 [

{

"userId": "macario",

“现金”:1000,

"createdAt": "2014-03-04T20:17:57.483Z",

"updatedAt": "2014-03-07T02:47:51.098Z",

“身份证”:15

}

][

{

"userId": "macario",

“现金”:1000,

"createdAt": "2014-03-04T20:17:57.483Z",

"updatedAt": "2014-03-07T02:47:51.098Z",

“身份证”:15

}]

和错误:

未捕获的 AssertionError:“未定义”== 1000

我想使用这些信息,但我无法访问它们。

4

1 回答 1

2

您的回复res.text可能是一个字符串。

当您stringify使用字符串时,引号会被转义,从而导致这种情况;

""[{\"userId\":\"macario\",\"cash\":1000,\"createdAt\":\"2014-03-
04T20:17:57.483Z\",\"updatedAt\":\"2014-03-07T02:47:51.098Z\",\"id\":15}]""

所以当你调用JSON.parse它时,它只是把它变成一个字符串,而不是你想要的对象。

只需更改此行;

var result = JSON.parse(JSON.stringify(res.text));

对此;

var result = JSON.parse(res.text);

如果parse失败,则 JSONres.text格式错误,这是您的主要问题。

于 2014-03-07T07:29:19.050 回答