Для новых версий мокко:
Теперь вы можете вернуть обещание в мокко, и мокко дождется его завершения, прежде чем продолжить. Например, пройдет следующий тест:
let a = 0;
before(() => {
return new Promise((resolve) => {
setTimeout(() => {
a = 1;
resolve();
}, 200);
});
});
it('a should be set to 1', () => {
assert(a === 1);
});
Вы можете найти документацию здесь
Для более старых версий мокко:
Если вы хотите, чтобы ваш асинхронный запрос был завершен до того, как все остальное произойдет, вам нужно использовать done
параметр в своем запросе до и вызвать его в обратном вызове.
Затем Mocha будет ждать вызова, done
чтобы начать обработку следующих блоков.
before(function (done) {
db.collection('user').remove({}, function (res) { done(); });
})
it('test spec', function (done) {
});
after(function() {});
Тем не менее, вы должны быть осторожны, так как отсутствие заглушки базы данных для модульного тестирования может сильно замедлить выполнение, поскольку запросы в базе данных могут быть довольно длинными по сравнению с простым выполнением кода.
Для получения дополнительной информации см. Документацию Mocha .
before
обработчика. Egbefore(function () { return db.collection...}