node.js - Mocha.js:即使测试套装失败也要运行 "after"钩子(Hook)

标签 node.js mocha.js

即使其中一个测试(套件)失败,是否可以运行“之后” Hook ?

最佳答案

是的,当测试失败时,afterafterEach 钩子(Hook)都应该运行。

有关相关讨论和更改,请参阅这些 github 问题:#94 , #125 , #143 , #690 .

这里有一个例子来证明我的主张:

describe('test', function() {
  after(function() { console.log('after'); });
  afterEach(function() { console.log('afterEach'); });

  it('fails sync', function(done) {
    after(function() { console.log('inner after 1'); });
    throw new Error('failed');
  });

  it('fails async', function(done) {
    after(function() { console.log('inner after 2'); });
    process.nextTick(function() {
      throw new Error('failed');
    });
  });
});

使用 mocha 1.1.12 产生以下输出:

  ․afterEach
․afterEach
after
inner after 1
inner after 2


  0 passing (5 ms)
  2 failing

1) test fails sync:
 Error: failed
  at Context.<anonymous> (/private/tmp/so/test/main.js:7:11)
  at Test.Runnable.run (/private/tmp/so/node_modules/mocha/lib/runnable.js:194:15)
  at Runner.runTest (/private/tmp/so/node_modules/mocha/lib/runner.js:355:10)
  at /private/tmp/so/node_modules/mocha/lib/runner.js:401:12
  at next (/private/tmp/so/node_modules/mocha/lib/runner.js:281:14)
  at /private/tmp/so/node_modules/mocha/lib/runner.js:290:7
  at next (/private/tmp/so/node_modules/mocha/lib/runner.js:234:23)
  at Object._onImmediate (/private/tmp/so/node_modules/mocha/lib/runner.js:258:5)
  at processImmediate [as _immediateCallback] (timers.js:330:15)

2) test fails async:
 Error: failed
  at /private/tmp/so/test/main.js:13:12
  at process._tickCallback (node.js:415:13)

关于node.js - Mocha.js:即使测试套装失败也要运行 "after"钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747367/

相关文章:

javascript - 如何通过断点使用 Selenium WebDriver 在 Node.js 上调试 javascript 测试?

node.js - 如何在 Nodejs 中对 http get 请求进行排队以控制它们的速率?

javascript - 检查 nodejs 连接是否来自本地主机

javascript - Gruntfile.js - 抛出错误 'Recursive process.nextTick detected"

node.js - 使用 server.inject 错误捕获的 hapijs 测试

testing - Meteorjs 测试 Meteor 方法

javascript - mocha 相当于 webpack 的解析根

node.js - 将await/async 与mocha、chai 一起使用

javascript - 有没有办法在ejs中的函数内添加算术运算符?

angularjs - 将 Angular 1 Simple 与 Express JS 一起使用