超级预期之间的区别然后呢?

时间:2018-06-19 00:52:50

标签: javascript automated-tests es6-promise supertest

使用supertest在JavaScript中测试异步HTTP请求时,这两个代码段之间的区别是什么?其中一个是正确的而另一个是错的吗?

request('http://localhost:8080/').get('/api/people') .expect(res => res.body.should.have.length(5))

VS

request('http://localhost:8080/').get('/api/people') .then(res => res.body.should.have.length(5))

我能注意到的唯一区别是:

  • expect返回Test个对象,当测试失败时,会打印一个大的堆栈跟踪
  • then返回Promise个对象,当测试失败时, 打印一个小堆栈跟踪

1 个答案:

答案 0 :(得分:0)

取决于您所使用的测试运行程序,显然会影响答案,但是类似Mocha这样的东西将允许您直接在测试中返回Promise,这将等待解决。测试通过。

所以,如果您有类似的事情:

describe('Your test case', function () {

  it('will wait for promise to resolve', function () {
    return request('http://localhost:8080/').get('/api/people')
      .then(res => res.body.should.have.length(5))
  })

})

在其他情况下,您确实应该 根据https://www.npmjs.com/package/supertest文档使用完成的回调。