Вы когда-нибудь писали разные тестовые примеры для проверки одной и той же функциональности, чтобы варьировать только переменные, которые вы используете в своем тесте?
Параметризованные тесты используются для повторного запуска одного и того же тестового примера, но при разных условиях при каждом запуске. Это упрощает поддержку теста и позволяет избежать дублирования.
Но как мне использовать его с 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, который позволяет вам написать тестовый пример в основном так же, как мы делали с более новой версией. шутки.