Как подтвердить ошибку валидации в модульном тесте sequelizejs с помощью jest? - PullRequest
0 голосов
/ 17 февраля 2019

Я тестирую модель пользователя.Имя пользователя не должно быть пустым.Модульный тест выглядит следующим образом:

it('should reject no name', async () => {
   name = '';
   expect(await User.create(payload())).toThrow();
});

, когда payload содержит все данные, кроме с пустым именем, модульный тест выдает следующую ошибку:

 SequelizeValidationError: Validation error: Invalid validator function: unique,
    Validation error: Invalid validator function: msg,
    Validation error: column "cell" does not exist

Однако утверждение здесь.toThrow неверно, и контрольный пример все еще не пройден.Пробовал toBeUndefined безрезультатно.Какое правильное утверждение для этого типа ошибки?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Предполагая, User.create возвращает Promise, которое отклоняется с выданной ошибкой:

await expect(User.create(payload())).rejects.toThrow();  // SUCCESS

Обратите внимание, что toThrow было исправлено для обещаний с PR 4884 , поэтомуесли вы используете более старую версию Jest (до 22.0.0), вам нужно будет использовать что-то вроде toEqual:

await expect(User.create(payload())).rejects.toEqual(expect.any(Error));  // SUCCESS
0 голосов
/ 17 февраля 2019

вам нужно сделать это.

await expect( User.create(payload())).to.be.rejectedWith(Error)

Теперь тест пройдёт, если user.create выдает ошибку, и завершится неудачей, если не выдал ошибку.

...