【发布时间】:2018-09-02 19:27:28
【问题描述】:
我对 mocha 和 chai 有疑问。我的测试在失败的测试中没有显示错误(例如,预期的“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();
});
});
我认为问题不直接在于 mocha 或 chai。我的仓库:github repository.
您需要做的就是克隆 repo,安装依赖项并运行 mongodb。随意创建虚假测试并查看输出。
最好的问候
【问题讨论】:
-
此断言可能会导致测试运行程序 github.com/sszczep/sCMS-API/blob/master/test/posts.test.js#L113 无法处理的错误。如果它失败了,done 永远不会被调用。它应该用 try..catch 包裹起来。我不确定这是否是这里唯一的问题,但它是其中之一。
-
所以你说我应该将所有期望包装在 try catch 块中并调用完成但有错误?
-
在当前状态下,是的。更好的方法是切换到 Promise 并更一致地处理错误。
-
是否期望返回承诺,以便我可以将 .catch 链接到它?在文档中没有找到任何内容
-
我将很快发布一个示例。考虑使用导致问题的相关代码更新问题,SO 规则要求问题是可理解的,无需遵循非现场链接。
标签: node.js express testing mocha.js chai