Mocha重试不适用于should.js进行异步调用

时间:2019-07-02 06:13:14

标签: mocha should.js

我正在尝试使用摩卡重试进行异步测试,但似乎无法正常工作。当测试失败(在回调的上下文中)时,它将不会调用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

0 个答案:

没有答案