Ошибка 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 для обработки отказа.