Вы когда-нибудь писали разные тестовые примеры для проверки одной и той же функциональности, чтобы варьировать только переменные, которые вы используете в своем тесте?

Параметризованные тесты используются для повторного запуска одного и того же тестового примера, но при разных условиях при каждом запуске. Это упрощает поддержку теста и позволяет избежать дублирования.

Но как мне использовать его с Jest?

Глобальные переменные Jest поставляются с методом с именем each, который позволяет повторно выполнять тест, каждый раз используя разные данные.

Этот метод можно использовать, передав таблицу, которая будет передана в вашу тестовую функцию и использована внутри тела вашего теста.

Предположим, у вас есть функция добавления, и вам нужно протестировать ее с разными значениями, чтобы вы могли передать в таблицу списки значений, которые будут использоваться, и ожидаемый результат при использовании этих значений.

test.each([
  [[1, 2], 3],
  [[50, 51], 101],
  [[10, 25], 35],
])('adds %i and expects %i', (numbers, result) => {
  const [firstNumber, secondNumber] = numbers
  expect(add(firstNumber, secondNumber)).toEqual(result)
})

Вы также можете передавать объекты в свою таблицу, чтобы улучшить читаемость.

test.each([
  {first: 1, second: 2, result: 3},
  {first: 50, second: 51, result: 101},
  {first: 10, second: 25, result: 35},
])('adds $first and $second and expects $result', ({ first, second, result }) => {
  expect(add(firstNumber, secondNumber)).toEqual(result)
})

Таким образом, вы увидите три разных теста в своем наборе тестов, каждый из которых имеет разные названия.

Вы также можете использовать все остальные методы шутки с вашим параметризованным тестом, например test.only.each или test.skip.each .

И последнее замечание: если вы используете версию Jest старше 23.x, вам необходимо установить пакет npm под названием jest-each, который позволяет вам написать тестовый пример в основном так же, как мы делали с более новой версией. шутки.