2015-08-19 2 views
0

Я разрабатываю плагин postcss и хочу протестировать его с помощью мокко. Вот мой тест:Mocha async тесты, звонки завершены() выпуск

function exec(cb) { 
    postcss() 
     .use(regexp) 
     .process(source) 
     .then(cb); 
} 

it('should add warnings to messages', function(done) { 
    var expected = 'somemessage'; 
    var message = ''; 

    function getMessage(result) { 
     message = result.messages; 
     assert.equal(message, expected); 
     done(); 
    } 

    exec(getMessage); 
}); 

Но это не удается, и я получаю Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.

Что я делаю неправильно?

ответ

0

Я нашел решение сам! Мы должны вернуть обещания в exec и it, и так, то нет необходимости в done()

function exec(cb) { 
    return postcss() 
     .use(regexp) 
     .process(source) 
     .then(cb); 
} 

it('should add warnings to messages', function() { 
    var expected = 'somemessage'; 
    var message = ''; 

    function getMessage(result) { 
     message = result.messages; 
     assert.equal(message, expected); 
    } 

    return exec(getMessage); 
}); 
0

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

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

In mocha testing while calling asynchronous function how to avoid the timeout Error: timeout of 2000ms exceeded.

+0

'getMessage' достигается, я могу войти в него. Но done() не вызывается, это не вопрос времени –

Смежные вопросы