Параметризовать ожидание Джеста - PullRequest
0 голосов
/ 26 января 2019

Я не могу передать функцию, которая выбрасывает expect() из-за приоритета оператора , который сгенерирует, прежде чем Jest сможет попытаться поймать ее.

Так что вместо этого:

expect(thisThrows())

Мы должны сделать это:

expect(() => thisThrows())

Но, скажем, я хочу его параметризовать:

test("foo", () => {
  const sut = (arg) => { if (!arg) throw new Error(); };
  expect(sut(undefined)).toThrow();
  expect(sut(null)).toThrow();
  expect(sut(0)).toThrow();
  expect(sut("")).toThrow();
  expect(sut(10)).not.toThrow();
});

Это все еще имеет первоначальную проблему.

Как я могу сделать что-то подобное аккуратно, чтобы мои тесты оставались сухими?

1 Ответ

0 голосов
/ 26 января 2019

Поскольку sut() выдает ошибку, она не может быть вызвана напрямую как expect(sut(undefined), потому что ошибка выдается немедленно, и ее нельзя подтвердить.

С ним следует обращаться так же, как с expect(() => thisThrows()):

expect(() => sut(undefined)).toThrow();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...