Mocha retry не работает с should.js для асинхронных вызовов - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь использовать 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

...