Мокко, тест обещаний nodejs не может закончиться из-за отсутствия выполнения

1

Я пытаюсь выполнить проверку обещания, но тест не позволяет утверждать, что он превысил лимит времени ожидания, и предлагает убедиться, что у меня есть сделанные предложения.

Это часть моего тестового кода:

$configurations
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model
    .then(function () {
        done(new Error("Expected INVALID_MODEL error but got OK"));
    }, function (error) {
        chai.assert.isNotNull(error);
        chai.expect(error.message).to.be.eq("INVALID_MODEL_ERROR");
        chai.expect(error.kind).to.be.eq("ERROR_KIND");
        chai.expect(error.path).to.be.eq("ERROR_PATH");
        done();
    })
    .catch(done);
});  

У меня есть все сделанные предложения там, как вы можете видеть, поэтому я не знаю, не хватает ли я чего-то в тесте, или структура просто ошибается.

Теги:
mocha
chai

1 ответ

4
Лучший ответ

Мокко поддерживают тестирование обещаний без использования done до тех пор, как вы return обещание.

const expect = chai.expect

it('should error', function(){
  return $configurations
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model
    .then(()=> { throw new Error("Expected INVALID_MODEL error but got OK")})
    .catch(error => {
      expect(error).to.not.be.null;
      expect(error.message).to.equal("INVALID_MODEL_ERROR");
      expect(error.kind).to.equal("ERROR_KIND");
      expect(error.path).to.equal("ERROR_PATH");
    })
})

Также посмотрите на chai-as-promised чтобы обещать тестирование больше, как стандартные утверждения/ожидания chai.

chai.should()
chai.use(require('chai-as-promised'))

it('should error', function(){
  return $configurations
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL)
    .should.be.rejectedWith(/INVALID_MODEL_ERROR/)
})

В среде Node 7. 6+ или где у вас есть регистр babel/babel, вы также можете использовать обработчики обещаний async/ await

it('should error', async function(){
  try {
    await $configurations.updateConfiguration(configurations_driver.NOT_VALID_MODEL)
    throw new Error("Expected INVALID_MODEL error but got OK")})
  } catch (error) {
    expect(error).to.not.be.null;
    expect(error.message).to.equal("INVALID_MODEL_ERROR");
    expect(error.kind).to.equal("ERROR_KIND");
    expect(error.path).to.equal("ERROR_PATH");
  }
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню