我正在尝试测试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();
})
})
})
在这里你可以看到结果如何:
未捕获的TypeError:对象[
{
“userId”:“macario”,
“现金”:1000,
“createdAt”:“2014-03-04T20:17:57.483Z”,
“updatedAt”:“2014-03-07T02:47:51.098Z”,
“id”:15
}
] [
{
“userId”:“macario”,
“现金”:1000,
“createdAt”:“2014-03-04T20:17:57.483Z”,
“updatedAt”:“2014-03-07T02:47:51.098Z”,
“id”:15
} ]
错误:
未捕获的AssertionError:“undefined”== 1000
我想使用此信息,但我无法访问它们。
答案 0 :(得分: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
失败,则res.text
中的JSON格式不正确,这是您的主要问题。