Чай, как и обещал глубокий тест собственности

У меня есть функция, которая вставляет в таблицу и возвращает Promise, Я тестирую с chai-as-promised что дубликаты вставок отклоняются. Что я хочу проверить, так это отказ и код причины. Когда я запускаю функцию и лог console.log(err.reason.code) я получил ER_DUP_ENTRY, Подтверждение этого достаточно для моего теста, поэтому я пытаюсь утверждать это следующим образом:

expect(insertTable()).to.eventually.be.rejected.and.eventually.to.have.deep.property('reason',{code: 'ER_DUP_ENTRY'}).notify(done);

Считается, что синтаксис правильный, по словам Чайса. Но я получаю проваленный тест:

AssertionError: expected { Object (status, reason) } to have deep property 'reason' of { code: 'ER_DUP_ENTRY' }, but got [Error: ER_DUP_ENTRY: Duplicate entry 'my_dupe' for key 'name_UNIQUE']

Это кажется противоречивым из того, что мой консольный журнал говорит, что это свойство.

1 ответ

В случае отказа, reason является объектом, оцененным chai-as-promised, Итак, ваше утверждение должно быть:

return expect(insertTable()).to.eventually.be.rejected.and.have.property("code").equal('ER_DUP_ENTRY');

Не забудьте вернуть обещание дождаться исполнения цепочки обещаний

Другие вопросы по тегам