Для нашего приложения React Native для iOS мы выбрали Jest для тестирования.
Причина довольно проста: оно официально разработано Facebook (а затем полностью поддерживается и широко распространено).

К счастью, я обнаружил сходство между Jest и Spock, еще одной знакомой мне средой тестирования.
Оба они могут повторять одни и те же наборы тестов с разными данными в сжатой форме.
Мы можем записать таблицу данных в тестовые файлы такие:

В этой статье вы узнаете, как написать одинаковые наборы тестов с разными данными в Jest 🚀

Установка Jest

Во-первых, добавьте Jest в свой проект React Native, нажав эту команду.
yarn add --dev jest

Если вы используете npm, нажмите:
npm install --save-dev jest

Затем добавьте следующий раздел в свой package.json :

{   
  "scripts": {
    "test": "jest"
  }
}

Понимание примеров

Затем создайте эти два файла в одном каталоге.

Приведенный выше файл представляет собой простой метод проверки, который оценивает, является ли переданное строковое значение «пустым» или нет.
Только строковое значение, длина которого равна единице или более, НЕ будет оцениваться как «пустое».

Это тестовый файл для validate.js .
Давайте разберемся, что делают коды построчно.

В первой строке:

describe('isEmpty method with the argument', () => {

реализовано описание наборов тестов с разными данными.
Строка isEmpty method будет отображаться в консоли, когда тест будет выполнен, и вы узнаете, что сделали тесты, увидев ее.

Вторая строка импортирует класс, который мы хотим протестировать.

    const validate = require('./validate');

С четвертой строки на восьмую строку:

    describe.each`
        str       | expected
        ${null}   | ${true}
        ${""}     | ${true}
        ${"word"} | ${false}

таблица данных установлена.

Потому что в этом тесте я хотел бы проверить три случая.
1. При передаче значения null метод возвращает значение true
2. При передаче пустой строки метод возвращает значение true
3. Когда строка содержит хотя бы один переданный символ, метод возвращает false

str будет аргументом для метода, а expected — ожидаемым значением, которое возвращает метод.

Наконец, с девятой по тринадцатую строку реализуется собственно тест.

    `('$str', ({str, expected}) => {
        test(`returns ${expected}`, () => {
            expect(validate.isEmpty(str)).toBe(expected)
        });
    });

'$str' также будет отображаемым сообщением, когда тест будет выполнен.
Поскольку тесты будут выполняться несколько раз и значение изменится, при установке $str будет отображаться значение str в каждом наборе тестов.

({str, expected}) передает значения в таблицу данных.

returns ${expected} также является сообщением и значением expected в каждом наборе тестов.

И последнее, но не менее важное: это определяет, что будет делать тест 😎

expect(validate.isEmpty(str)).toBe(expected)

Это определяет, что когда isEmptymethod запускается с str, он должен возвращать expected.

Результат

Поняв все, нажмите yarn start !
Результат будет таким.

 PASS  validate.test.js
  isEmpty method with the argument
    null
      ✓ returns true (6ms)
    ""
      ✓ returns true (1ms)
    "word"
      ✓ returns false (1ms)
Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total

использованная литература