Я пытаюсь выполнить проверку обещания, но тест не позволяет утверждать, что он превысил лимит времени ожидания, и предлагает убедиться, что у меня есть сделанные предложения.
Это часть моего тестового кода:
$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);
});
У меня есть все сделанные предложения там, как вы можете видеть, поэтому я не знаю, не хватает ли я чего-то в тесте, или структура просто ошибается.
Мокко поддерживают тестирование обещаний без использования 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");
}
})