Для нашего приложения 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)
Это определяет, что когда isEmpty
method запускается с 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