Я пытаюсь использовать mocha retry для асинхронного теста, но он не работает.когда тест не пройден (в контексте обратного вызова), он не будет вызывать 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);
}
});
});
Запуск результата асинхронного кода: mocha testRetries.js --timeout 259200000 -ui bdd --retries 3
попытка асинхронности :: 0 1) AsyncTest
0 прохождение (319 мс) 1 сбой
1) асинхронное асинхронное тестирование:
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 - timeout 259200000 --ui bdd --retries 3
счетчик синхронизации :: 2 ✓ синхронизация
1 проход (8 мс)
мокко - версия 6.1.4