Перейти к содержанию

Написание интеграционных тестов

Pasted image 20211023125019.png
Интеграционные тесты находятся на пирамиде тестов на один уровень выше юнит-тестов. Они помогают убедиться в том, что сервис правильно взаимодействует с инфраструктурой и другими сервисами. Есть две стратегии, упрощающие код таких тестов.
Первая стратегия заключается в тестировании каждого адаптера сервиса, возможно, вместе со вспомогательными классами.
Вторая стратегия состоит в использовании контрактов. В таблице видно, что структура контракта зависит от того, как именно сервисы общаются между собой.

Стиль взаимодействия Потребитель Провайдер Контракт
Запросы/ответы REST API-шлюз Сервис Order HTTP запрос и ответ
Издатель/подписчик Сервис Order History Сервис Order Доменное событие
Асинхронные запросы и ответы Сервис Order Сервис Kitchen Командное и ответное сообщения

Интеграционные тесты с сохранением

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

  • Подготовка — подготавливает БД, создавая ее схему и приводя ее к известному состоянию. Этот этап может также инициировать транзакцию
  • Выполнение — выполняет операцию с БД
  • Проверка — делает вывод о состоянии БД и извлеченных из нее объектов
  • Очистка — необязательный этап, отменяющий изменения, например, путём отмены инициированной на этапе подготовки транзакции

Дальше в книге идут примеры тестов на основе контрактов с применением Spring Cloud Contract. В главе 9 указано, что помимо это фреймворка есть фреймворк Pact с поддержкой dotNET. Оставляю примеры без разбора.


Последнее обновление : 2 июня 2023 г.
Дата создания : 1 августа 2022 г.

Комментарии

Комментарии