首页 文章

使用jasmine-node / frisby访问JSON值

提问于
浏览
0

我正在尝试构建一个测试,该测试将验证针对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";

2 回答

  • -1

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

  • 0

    你也需要这样做:

    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();
    

相关问题