Mocha 不显示失败测试的任何详细信息

car*_*iem 4 mocha.js node.js sails.js

我正在将一个应用程序从 Sails.js v0.12 迁移到 v1.0,其中包括将 mocha 从 ^3.5.0 升级到 ^5.2.0。我认为这是问题的根源,但我似乎找不到解决办法。

\n\n

以前,当测试失败时,mocha 报告器输出的末尾会有错误摘要:失败的具体断言、文件名、行号、错误消息等。现在,报告器正在为 it着色红色,但没有显示其他详细信息。

\n\n

我尝试更改 mocha.opts 中的报告器,该报告器适用于实际执行输出,但最后没有任何内容启用摘要。我缺少什么?

\n\n
// ./test/integration/models/User.test.js\n\ndescribe('User', () => {\n\n  describe('find()', () => {\n    it('should return an array of users', () => {\n      return User.find()\n      .then((users) => {\n\n        users.should.be.a('array');\n        true.should.be.false;  // No problems if this is removed\n\n      });\n    });\n  });\n\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

在控制台中:

\n\n
> node ./node_modules/mocha/bin/mocha test/lifecycle.test.js test/integration/**/*.test.js\n\n\n\xe2\x88\x9a OtherModel method() should do something: 17ms\n1) User find() should return an array of users\n'Done.'\nPS C:\\repos\\myproject>\n
Run Code Online (Sandbox Code Playgroud)\n

car*_*iem 6

事实证明,Mocha 很好,我的测试定义也很好,我只是错误地修复了一个完全不同的迁移问题。从版本 4 开始, mocha在认为所有测试都已完成时将不再自动杀死自己。这意味着必须使用以下两个选项之一:

  1. 添加--exit到 mocha.opts 或调用命令的任何地方
  2. process.exit()在测试套件的 JavaScript 中运行

process.exit()我通过添加到after()测试引导文件中的块 来尝试第二个选项。这是一个坏主意,并导致了上面令人困惑的行为。

为了解决我的问题,我删除了对该after()块的更改并将其添加--exit到 mocha.opts 中。感谢 Dhruv Choudhary 为我指明了正确的方向。