我有一些遵循以下结构的mocha / chai / chai-http测试,但是,每一项测试失败,我都会得到UnhandledPromiseRejectionWarning
,但似乎无法弄清其来源。
UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个 由抛出异步函数引起的错误 没有障碍,或者拒绝了没有处理的承诺 .catch()。
describe('indexData', () =>{
it('Should return status code 200 and body on valid request', done => {
chai.request(app).get('/api/feed/indexData')
.query({
topN: 30,
count: _.random(1, 3),
frequency: 'day'
})
.set('Authorization', token).then(response => {
// purposefully changed this to 300 so the test fails
expect(response.statusCode).to.equal(300)
expect(response.body).to.not.eql({})
done()
})
})
})
我尝试在.catch(err => Promise.reject(err)
之后添加一个.then()
,但是它也不起作用。我在这里可以做什么?
答案 0 :(得分:0)
我通过添加.catch(err => done(err))
答案 1 :(得分:0)
将done
回调与promises一起使用是一种反模式。承诺由现代测试框架(包括Mocha)支持。测试应返回承诺:
it('Should return status code 200 and body on valid request', () => {
return chai.request(app).get('/api/feed/indexData')
.query({
topN: 30,
count: _.random(1, 3),
frequency: 'day'
})
.set('Authorization', token).then(response => {
// purposefully changed this to 300 so the test fails
expect(response.statusCode).to.equal(300)
expect(response.body).to.not.eql({})
})
})
})