Mocha.js:即使在testing套装失败的情况下也可以运行“之后”

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

是的, aftertesting失败after ,应该运行afterEach钩子after

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

这是一个例子来certificate我的说法:

 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)