我正在将一个应用程序从 Sails.js v0.12 迁移到 v1.0,其中包括将 mocha 从 ^3.5.0 升级到 ^5.2.0。我认为这是问题的根源,但我似乎找不到解决办法。
以前,当测试失败时,mocha 报告器输出的末尾会有一个错误摘要:失败的具体断言、文件名、行号、错误消息等。现在,报告器正在着色it block 为红色,但未显示其他详细信息。
我尝试更改 mocha.opts 中的报告器,它适用于实际执行输出,但最后没有启用摘要。我错过了什么?
// ./test/integration/models/User.test.js
describe('User', () => {
describe('find()', () => {
it('should return an array of users', () => {
return User.find()
.then((users) => {
users.should.be.a('array');
true.should.be.false; // No problems if this is removed
});
});
});
});
在控制台中:
> node ./node_modules/mocha/bin/mocha test/lifecycle.test.js test/integration/**/*.test.js
√ OtherModel method() should do something: 17ms
1) User find() should return an array of users
'Done.'
PS C:\repos\myproject>
最佳答案
事实证明 Mocha 很好,我的测试定义也很好,我只是错误地修复了一个完全不同的迁移问题。从版本 4 开始,mocha will no longer automatically kill itself当它认为所有测试都完成时。这意味着必须使用以下两个选项之一:
- 将
--exit
添加到 mocha.opts 或调用命令的位置 - 在测试套件的 JavaScript 中运行
process.exit()
我通过将 process.exit()
添加到我的测试引导文件中的 after()
block 尝试了第二个选项。 这是一个坏主意,导致上述行为令人困惑。
为了解决我的问题,我删除了对 after()
block 的更改,并将 --exit
添加到 mocha.opts。感谢 Dhruv Choudhary 为我指明了正确的方向。
关于node.js - Mocha 未显示失败测试的任何详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888618/