使用 jasmine-node / frisby 访问 JSON 值
Accessing JSON values with jasmine-node / frisby
我正在尝试构建一个测试,该测试将验证收到的错误消息,以验证收到的错误消息,以用于对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";
事实证明提供的端点不正确,测试对正确的端点有效!
你也需要这样做:
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();
相关文章:
- 访问JSON对象内部的数组元素
- 访问json数组中的对象
- 访问嵌套JSON对象的键,其中键是动态的
- 如何使用javascript从JSON访问单个对象
- json访问数据未正确显示
- jQuery获取JSON访问结果
- 使用 AngularJS 从没有键值的 JSON 访问数据值
- JSON 访问变量字段
- JSON - 访问 JSON 数组并分配变量
- 如何向每个动态生成的元素添加一个事件,并仅在JAVASCRIPT中从json访问数据
- Node.js&JSON:访问对象属性
- 使用d3.json()访问嵌套JSON
- JSON访问循环错误
- 我的.json文件无法从d3.json访问
- 使用jQuery (Ajax, JSON)访问PHP数组
- 无法从json访问数据
- JSON -访问字段名为'*'星号
- 使用json访问数组中的元素
- 不能从JSON访问对象
- Json访问错误