node.js - Mocha 未显示失败测试的任何详细信息

标签 node.js sails.js mocha.js

我正在将一个应用程序从 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当它认为所有测试都完成时。这意味着必须使用以下两个选项之一:

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

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

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

关于node.js - Mocha 未显示失败测试的任何详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888618/

相关文章:

javascript - 在使用 Promise.all() forEach 渲染 NodeJS 页面之前等待 Firebase 数据加载

node.js - sails Captain 0.5.8 超时/卡住

Sails.js - 如果存在一对多关联,则进行蓝图查询

ruby-on-rails - NoMethodError : undefined method `stub' for ModuleX:Module

python - 信令服务器性能问题 : Python vs NodeJS

javascript - Promise 链如何断言哪个值来自哪个返回值?

node.js - 开场 Mocha 并行描述

javascript - 如果超时后重复调用该方法,如何在sinon中进行测试

node.js - 在ubuntu中安装node-gd

node.js - NodeJS/SailsJS 应用程序数据库 block