首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jasmine-node / frisby访问JSON值

使用jasmine-node / frisby访问JSON值
EN

Stack Overflow用户
提问于 2015-03-13 22:08:49
回答 2查看 1.1K关注 0票数 0

我正在尝试构建一个测试,该测试将验证收到的错误消息是否存在对API的错误请求。我使用node-jasmine和frisby来编写测试,但是在使用点符号访问JSON值时遇到了问题。

代码语言:javascript
复制
 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响应正文

代码语言:javascript
复制
{
"error": {
"newEmail": "missing-required-key",
"oldEmail": "missing-required-key"
}
}

测试结果出现以下错误:

代码语言:javascript
复制
Cannot read property newEmail of undefined

我已经用Postman写了一个类似的测试,我正在尝试将这些测试转换成可以被node.js使用的东西。

邮递员工作示例:

代码语言:javascript
复制
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";
EN

回答 2

Stack Overflow用户

发布于 2015-03-16 23:43:45

原来提供的终结点不正确,测试对于正确的终结点是有效的!

票数 0
EN

Stack Overflow用户

发布于 2018-03-07 20:24:58

你也需要这样做:

代码语言:javascript
复制
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();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29034374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档