expressjavascript超级测试需要特定的json字段

expressjavascript超级测试需要特定的json字段,javascript,express,supertest,Javascript,Express,Supertest,我正试图为API端点编写一些单元测试,并决定使用JavaScript Express w/Supertest。我有一些基本的问题,但在检查特定字段的响应时遇到了一些问题。我想解析主体并检查预期字段是否返回并具有正确的值。我在网上看到的大多数东西都使用这种方法,但当我尝试时,它总是通过,即使我输入了我知道JSON中不存在的值。有什么建议吗?以下是我的代码片段: describe('GET category', function () { it('response w/ only injur

我正试图为API端点编写一些单元测试,并决定使用JavaScript Express w/Supertest。我有一些基本的问题,但在检查特定字段的响应时遇到了一些问题。我想解析主体并检查预期字段是否返回并具有正确的值。我在网上看到的大多数东西都使用这种方法,但当我尝试时,它总是通过,即使我输入了我知道JSON中不存在的值。有什么建议吗?以下是我的代码片段:

describe('GET category', function () {
    it('response w/ only injury returned', function () {
        request('endpoint')
            .get('path')
            .set('header', 'token')
            .expect(200)
            .then(response => {
                console.assert(response.body, "Baseball")
            })
    })
});

我还尝试将.then改为.expect,结果相同。如果我做response.body.specificFieldinBody,我会得到类似的结果。有什么帮助吗?

你可以按自己的方式做-使用
。然后使用
语法,但我认为使用
Supertest
断言语法会很好

这意味着,使用
response.body.should.have.property(“棒球”)
而不是
console.assert(response.body,“barball”)
barball
是您的专用字段)

或者,我的建议是创建一个重用代码:将断言回调函数放到下一个
expects
部分

const isIncludeField = function (fieldName) {
  return function (res) {
    res.body.should.have.property(fieldName);
  };
}

describe('GET category', function () {
  it('response w/ only injury returned', function () {
    request('endpoint')
      .get('path')
      .set('header', 'token')
      .expect(200)
      .expect(isIncludeField('Baseball')) // 
      .end(done); // call done callback
  })
});

你可以按照自己的方式来做——使用
。然后使用
语法,但我认为使用
超级测试
断言语法会很好

这意味着,使用
response.body.should.have.property(“棒球”)
而不是
console.assert(response.body,“barball”)
barball
是您的专用字段)

或者,我的建议是创建一个重用代码:将断言回调函数放到下一个
expects
部分

const isIncludeField = function (fieldName) {
  return function (res) {
    res.body.should.have.property(fieldName);
  };
}

describe('GET category', function () {
  it('response w/ only injury returned', function () {
    request('endpoint')
      .get('path')
      .set('header', 'token')
      .expect(200)
      .expect(isIncludeField('Baseball')) // 
      .end(done); // call done callback
  })
});

这与我一直在尝试的内容类似,但是should.*断言给了我一个未定义的“无法读取属性'have'。我的package.json中是否有什么东西或者我缺少的依赖项?`“依赖项”:{“cookie解析器”:“~1.4.4”,“调试”:“~2.6.9”,“express”:“~4.16.1”,“http错误”:“~1.6.3”,“morgan”:~1.9.1“,”帕格“:”2.0.0-beta11“}”,devdependences“{”supertest“^4.0.2“}”,scripts“{”start“:”node./bin/www“,”test“:”mocha'test/apiTest.js“}}”这与我一直在尝试的内容类似,但should.*断言给了我一个无法读取未定义的属性“have”。我的package.json中有什么东西或者我缺少的依赖项吗?`“依赖项”:{“cookie解析器”:“~1.4.4”,“调试”:“~2.6.9”,“快速”:“~4.16.1”,“http错误”:“~1.6.3”,“摩根”:“~1.9.1”,“帕格”:“2.0.0-beta11”},“devdependences”:{“超级测试”:“^4.0.2”},“脚本”:{“开始”:“节点。/bin/www”,“测试”:“mocha test test test/apiTest.js”}`