Чай, как и обещал глубокий тест собственности
У меня есть функция, которая вставляет в таблицу и возвращает 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');
Не забудьте вернуть обещание дождаться исполнения цепочки обещаний