Ошибка: превышено время ожидания 2000 мс.Для асинхронных тестов и хуков, убедитесь, что "done ()" - Как избежать этой ошибки? - PullRequest
0 голосов
/ 31 января 2019

Код:

var processFooBar = function (message, callback) {

  doFooAndBar(message, callback);

};
module.exports.processFooBar = processFooBar;


var doFooAndBar = function (data, callback) {
    async.parallel(
        [
            function (callback) {
                foo(data, function (err, response) {
                    callback(err, response);
                });
            },
            function (callback) {
                bar(data, function (err, response){
                    callback(err, response);
                });
            }
        ],
        function (err, results) {
            callback(err, results);
        }
    );
};
module.exports.doFooBar = doFooBar;

Модульный тест

describe('Process data', function () {
    var fooStub;

    beforeEach(function (done) {
        done();
    });

    afterEach(function (done) {
        fooStub.restore();
        done();
    });

    it('can process data', function (done) {
        fooStub = sinon.stub(fileName, 'foo').yields(null, null);
        barNockCall();
        app.processFooBar(message,
            function (err, response) {
                nock.isDone().should.be.true;
                nock.cleanAll();
                done();
            }
        }
    });

Я получаю следующую ошибку:

can process data:
  Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. 
(/Path/To/Test.js)

Если я удаляю foo () в async.parallel, то я не получаю ошибку.Кроме того, я думаю, что первый sinon.stub, который fooStubis не вызывается.

1 Ответ

0 голосов
/ 14 февраля 2019

Вам нужно увеличить время ожидания тестового фреймворка.Время ожидания по умолчанию может составлять 2000 мсек. Если запрос занимает более 2 секунд, будет выдано сообщение об ошибке.

beforeEach(function (done) {
 this.timeout(10000)
 done();
});

В вашем случае может потребоваться переопределение времени ожидания по умолчанию.

...