Para novas versões de mocha:
Agora você pode devolver uma promessa ao mocha, e o mocha aguardará a conclusão antes de continuar. Por exemplo, o seguinte teste será aprovado:
let a = 0;
before(() => {
return new Promise((resolve) => {
setTimeout(() => {
a = 1;
resolve();
}, 200);
});
});
it('a should be set to 1', () => {
assert(a === 1);
});
Você pode encontrar a documentação aqui
Para versões mais antigas do mocha:
Se você deseja que sua solicitação assíncrona seja concluída antes que tudo o mais aconteça, você precisa usar o done
parâmetro em sua solicitação anterior e chamá-lo no retorno de chamada.
O Mocha irá então esperar até done
ser chamado para começar a processar os blocos seguintes.
before(function (done) {
db.collection('user').remove({}, function (res) { done(); }); // It is now guaranteed to finish before 'it' starts.
})
it('test spec', function (done) {
// execute test
});
after(function() {});
No entanto, você deve ter cuidado, pois não criar stub no banco de dados para teste de unidade pode retardar fortemente a execução, pois as solicitações em um banco de dados podem ser muito longas em comparação com a simples execução de código.
Para obter mais informações, consulte a documentação do Mocha .
before
manipulador. Exbefore(function () { return db.collection...}