我正在尝试构建一个测试,该测试将验证收到的错误消息是否存在对API的错误请求。我使用node-jasmine和frisby来编写测试,但是在使用点符号访问JSON值时遇到了问题。
var frisby = require('frisby');
frisby.create('JSON Error')
.put('url', {
}, {json: true})
.expectStatus(400)
.expectHeaderContains('content-type', 'application/json')
.auth('username', 'password')
.afterJSON(function (body) {
//changed values
expect(body.error.newEmail).toMatch('missing-required-key'),
expect(body.error.oldEmail).toMatch('missing-required-key')
})
.toss();预期的JSON响应正文
{
"error": {
"newEmail": "missing-required-key",
"oldEmail": "missing-required-key"
}
}测试结果出现以下错误:
Cannot read property newEmail of undefined我已经用Postman写了一个类似的测试,我正在尝试将这些测试转换成可以被node.js使用的东西。
邮递员工作示例:
var body = JSON.parse(responseBody);
//error messages
var newEmailError = body.error.newEmail;
var oldEmailError = body.error.oldEmail;
tests["New Email Error Message"] = newEmailError === "missing-required-key";
tests["Old Email Error Message"] = oldEmailError === "missing-required-key";发布于 2015-03-16 23:43:45
原来提供的终结点不正确,测试对于正确的终结点是有效的!
发布于 2018-03-07 20:24:58
你也需要这样做:
frisby.create('GET JSON data with parameters')
.get('your_json_url.com')
.expectStatus(200)
.expectHeader('Content-Type', 'application/json')
.expectJSON({ 'error': {
'newEmail': 'missing-required-key'
}})
.toss();https://stackoverflow.com/questions/29034374
复制相似问题