我正在尝试使用摩卡重试进行异步测试,但似乎无法正常工作。当测试失败(在回调的上下文中)时,它将不会调用done(),因此重试不起作用。
我已经用这种方式编写了许多测试,并且我需要一个不需要更改所有测试流程的解决方案
var should = require('should');
var counter = 0;
describe('async',function(){
it('AsyncTest', function(done) {
setTimeout(function()
{
console.log('attempt::', counter++);
counter.should.equal(3);
done();
}, 300);
});
});
以下普通代码正在同步测试中工作:
var counter = 0;
var should = require('should');
describe('sync', function() {
it('sync', function() {
if(counter > 1) {
console.log('counter::', counter);
} else {
counter++;
counter.should.equal(10);
}
});
});
运行异步代码结果: 摩卡testRetries.js --timeout 259200000 --ui bdd --retries 3
异步 尝试:0 1)AsyncTest
0通过(319ms) 1个失败
1)异步 AsyncTest:
Uncaught AssertionError: expected 1 to be 3
+ expected - actual
-1
+3
at Assertion.fail (/Users/shaylang/dev/nodejsautomation/src/node_modules/should/cjs/should.js:258:17)
at Assertion.value (/Users/shaylang/dev/nodejsautomation/src/node_modules/should/cjs/should.js:335:19)
at Timeout._onTimeout (testRetries.js:20:27)
运行同步代码结果:
mocha testRetries.js-超时259200000 --ui bdd --retries 3
同步 计数器:: 2 ✓同步
1次通过(8毫秒)
mocha --version 6.1.4