Шпаргалка по Jest с примерами кода

Шпаргалка по Jest (Stylesheet Jest)

Базовая структура теста

Поиск совпадений

Использование поиска совпаденийофициальная документация

Базовый поиск совпадений

Определение истинности

Числа

Строки

Массивы

Объекты

Исключения

Снимки

Функция для создания «моков» (фикций)

«Алиасы» (синонимы)

  • toBeCalled → toHaveBeenCalled
  • toBeCalledWith → toHaveBeenCalledWith
  • lastCalledWith → toHaveBeenLastCalledWith
  • nthCalledWith → toHaveBeenNthCalledWith
  • toReturnTimes → toHaveReturnedTimes
  • toReturnWith → toHaveReturnedWith
  • lastReturnedWith → toHaveLastReturnedWith
  • nthReturnedWith → toHaveNthReturnedWith

Примеси

Поиск совпадений с промисами

Или с помощью async/await:

Официальная документация

Асинхронные тесты

Смотрите больше примеров в официальной документации Jest.

Хорошей практикой считается определение количества ожидаемых утверждений (assertions) в асинхронных тестах, тест провалится, если утверждения не будут вызваны.

Обратите внимание, что вы также можете делать это в файле, за пределами любых describe и test:

Это обеспечит присутствие хотя бы одного утверждения в процессе тестирования. Это также подходит для случаев, когда ожидается конкретное число утверждений — expect.assertions(3).

async/await

Промисы

Коллбек done()

Утверждение должно быть обернуто в блок try/catch, иначе Jest будет игнорировать ошибки:

Фикции

Функции для создания фикций

Вы также можете использовать снимки:

И передавать реализацию в функцию jest.fn():

Читать подробнее

Возвращение, разрешение и отклонение значений

Ваши фикции могут возвращать значения:

Или разрешать значения:

Они даже могут отклонять значения:

Вы можете комбинировать названные подходы:

Создание фиктивных модулей с помощью метода jest.mock()

Читать подробнее

Обратите внимание, при использовании babel-jest вызовы jest.mock() будут подниматься в начало блока кода. Используйте jest.doMock() для предотвращения подобного поведения.

Создание фиктивных модулей в отдельных файлах

  1. Создаем файл, например, __mocks__/lodash/memoize.js:
  2. Добавлем его в тест:

Читать подробнее

Методы объектов фикций

Геттеры и сеттеры фикций

Новая версия:

Старая версия:

Очистка и восстановление фикций

Для одной фикции:

Обратите внимание: mockRestore() работает только применительно к фикциям, созданным с помощью jest.spyOn().

Для всех фикций:

Получение доступа к исходному модулю при использовании «моков»

Фиктивные таймеры

Позволяет писать синхронные тесты для кода, в котором используются нативные таймеры (setTimeoutsetIntervalclearTimeoutclearInterval).

Или настраиваем таймеры по времени с помощью advanceTimersByTime():

В особых случаях используется jest.runOnlyPendingTimers().

Обратите внимание: jest.useFakeTimers() следует вызывать только для использования других методов фиктивных таймеров.

Тестирование, основанное на данных

Запускаем одни и те же тесты с разными данными:

Или с помощью шаблонных литералов:

Или на уровне describe:

describe.each()test.each()

Пропуск тестов. Шпаргалка по Jest.

Не запускать указанные тесты:

Запускать только указанные тесты:

Тестирование модулей с побочными эффектами

Node.js и Jest will кэшируют запрашиваемые (require) модули. Для тестирования модулей с побочными эффектами необходимо очищать реестр модулей между тестами:

Возможно вам будет интересно — Шпаргалка по React- ответы на вопросы 2020-2021