Для моего внешнего вклада в выпуск 0.3 я выбрал выпуск из проекта Jest-Extended, над которым я работал ранее. Это проект, который предоставляет пользовательские сопоставители (также называемые утверждениями), которые можно использовать в фреймворке тестирования Jest. В этом сообщении в блоге кратко обсуждается, как я решил эту проблему и что я узнал в процессе.

Объяснение проблемы

Эта проблема представляет собой запрос функции, в котором говорится о необходимости нового сопоставления Array.toSatisfyAny(predicate), которое можно использовать в Jest. Сопоставитель – это метод/функция, которая сравнивает ожидаемый результат с фактическим и возвращает логическое значение (истина/ложь). Эти сопоставители составляют основу таких сред тестирования, как Jest. Проект Jest предоставляет множество сопоставителей, но пользователям часто требуются новые для удовлетворения конкретных требований проекта.

Процесс

Для начала я прочитал код сопоставителя 'Array.toSatisfyAll(predicate)', который немного похож на мой сопоставитель, и выполнил шаги, необходимые для создания и тестирования нового сопоставителя. Они были следующими:

  1. Создан новый подкаталог в каталоге matchers.
  2. В подкаталог добавлены следующие файлы:
  • 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);
});

Результаты обучения

  1. Написал кастомные сопоставители для Jest.
  2. Написал документацию к коду.
  3. Подтянул свои навыки программирования на TypeScript.
  4. Написал тесты для кода.