Я пытаюсь протестировать фрагмент кода, который я написал с промисами bluebird, используя chai-as-promised.
Мой тестируемый метод возвращает отказ от обещания следующим образом:
/**
* Creates a new user entry in the database.
* @param {JSONObject} userData -- User details for creation.
* @return => {boolean} true if succefully created, false otherwise.
**/
createUser: function(userData) {
return Promise.reject();
},
Код тестирования такой:
describe('User creation test suite', function() {
it('Should successfully create root user', function(done) {
expect(users.createUser(sampleUsers.raam))
.to.eventually.have.property('id').and.notify(done);
//expect(Promise.resolve({foo:'bar'})).to.eventually.have.property('id').and.notify(done);
});
Несмотря на то, что метод намеренно терпит неудачу, тесткейс помечается как пройденный. Вот результат.
Набор тестов для создания пользователей
✓ Should successfully create root user
Если я проверю напрямую жестко закодированную строку, например
expect(Promise.resolve({foo:'bar'})).to.eventually.have.property('id').and.notify(done);
Тогда вроде работает. Что я здесь делаю неправильно?
EDIT Я обнаружил, что это не имеет ничего общего с обещаниями bluebird или моим методом, который находится на стадии тестирования. Простое жестко запрограммированное отклонение также работает некорректно. То есть...,
expect(Promise.reject({foo:'bar'})).to.eventually.have.property('id').and.notify(done)
возвращается как переданное, а не с ошибкой. Я делаю что-то ужасно неправильно здесь?