我对摩卡咖啡和柴有问题。我的测试未显示失败测试的错误(例如,预期“ a”为“ b”)。 test log
1) Shouldn't publish new post - there is a post with this title
npm ERR! Test failed. See above for more details.
示例代码:
it('Shouldn\'t publish new post - some required fields are empty', done => {
request(app)
.post('/posts')
.set('Authorization', `Bearer ${token}`)
.send()
.end((err, { body }) => {
if(err) {
return done(err);
}
expect(body).to.have.property('errors');
return done();
});
});
我认为问题不仅仅在于摩卡咖啡或柴。我的仓库:github repository。
您需要做的就是克隆仓库,安装依赖项并运行mongodb。随意创建虚假测试并查看输出。
最好的问候
答案 0 :(得分:0)
问题在于,由于嵌套的回调,无法始终如一地处理错误。如果expect(body)...
断言失败,则将导致异步错误,该错误永远不会用done(error)
报告给当前测试,因此所有异步Chai断言都应该用try..catch
包装。
更好的方法是使用Mocha原生支持的承诺so does Supertest。这样可以始终处理错误,而无需进行done
回调:
it('Shouldn\'t publish new post - outdated/wrong token', async () => {
const { body } = await request(app)
.post('/posts')
.set('Authorization', 'Bearer blah_blah_blah')
.send();
expect(body).to.have.property('errors');
});