Ошибка Mocha, вызывающая таймаут
Я начинаю работу с платформы тестирования мокки с помощью NodeJS. Успешное утверждение работает нормально, но если утверждение терпит неудачу, мои тайм-ауты теста. За утверждение, что я пробовал, должен и должен ожидать. Например (асинхронный код)
it('should create new user', function(done){
userService.create(user).then(function(model){
expect(model.id).to.be(1); //created user ID
done();
}, done)
});
Здесь id модели if не равен 1, а затем истекает время проверки, а не сообщение об ошибке. Я уверен, что я делаю что-то неправильно. Ценю вашу помощь. Спасибо!
Ответы
Ответ 1
ожидание бросает ошибку, которая улавливается обещанием. Добавление условия catch, которое вызывает выполненные исправления.
it('should create new user', function(done) {
userService.create(user).then(function(model) {
expect(model.id).to.be(1); //created user ID
done();
}).catch(function(e) {
done(e);
})
});
Ответ 2
Ответ Shawn работает, но есть более простой способ.
Если вы вернете обещание из своего теста, Mocha будет обрабатывать все для вас:
it('should create new user', function() {
return userService.create(user).then(function(model){
expect(model.id).to.be(1); //created user ID
});
});
Нет done
требуется обратный вызов!
Ответ 3
Похоже, done
никогда не вызывается. Помимо then
, вам может понадобиться else
для обработки отказа.