Для моего внешнего вклада в выпуск 0.3 я выбрал выпуск из проекта Jest-Extended, над которым я работал ранее. Это проект, который предоставляет пользовательские сопоставители (также называемые утверждениями), которые можно использовать в фреймворке тестирования Jest. В этом сообщении в блоге кратко обсуждается, как я решил эту проблему и что я узнал в процессе.
Объяснение проблемы
Эта проблема представляет собой запрос функции, в котором говорится о необходимости нового сопоставления Array.toSatisfyAny(predicate), которое можно использовать в Jest. Сопоставитель – это метод/функция, которая сравнивает ожидаемый результат с фактическим и возвращает логическое значение (истина/ложь). Эти сопоставители составляют основу таких сред тестирования, как Jest. Проект Jest предоставляет множество сопоставителей, но пользователям часто требуются новые для удовлетворения конкретных требований проекта.
Процесс
Для начала я прочитал код сопоставителя 'Array.toSatisfyAll(predicate)', который немного похож на мой сопоставитель, и выполнил шаги, необходимые для создания и тестирования нового сопоставителя. Они были следующими:
- Создан новый подкаталог в каталоге matchers.
- В подкаталог добавлены следующие файлы:
- index.js — экспорт сопоставления в формате, ожидаемом Jest.
- index.test.js — набор тестов, использующий новый сопоставитель и гарантирующий его прохождение.
- predicate.js — функция, которая проверяет фактическое значение на соответствие ожидаемому значению/поведению.
- predicate.test.js — проверяет предикат. Должны быть охвачены оба случая true/false.
3. Обновлена документация, чтобы включить новый сопоставитель.
4. Добавлено определение типа нового сопоставителя в файл types/index.d.ts.
После этого я закодировал перечисленные выше файлы (используя язык TypeScript) и протестировал их. Когда все тесты прошли успешно, код был зафиксирован, отправлен и создан запрос на извлечение.
Вот пример того, как этот сопоставитель можно использовать в Jest:
.toSatisfyAny(предикат)
Используйте `.toSatisfyAny`, если вы хотите использовать пользовательский сопоставитель, предоставив функцию предиката, которая возвращает `логическое значение` для любого значения в массиве.
test('passes when any value in array passes given predicate', () => { const isOdd = el => el % 2 === 1; expect([1,2,3,4]).toSatisfyAny(isOdd); expect([2,4,6,8]).not.toSatisfyAny(isOdd); });
Результаты обучения
- Написал кастомные сопоставители для Jest.
- Написал документацию к коду.
- Подтянул свои навыки программирования на TypeScript.
- Написал тесты для кода.