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

Интеграционные тесты находятся на пирамиде тестов на один уровень выше юнит-тестов. Они помогают убедиться в том, что сервис правильно взаимодействует с инфраструктурой и другими сервисами. Есть две стратегии, упрощающие код таких тестов.
Первая стратегия заключается в тестировании каждого адаптера сервиса, возможно, вместе со вспомогательными классами.
Вторая стратегия состоит в использовании контрактов. В таблице видно, что структура контракта зависит от того, как именно сервисы общаются между собой.
| Стиль взаимодействия | Потребитель | Провайдер | Контракт |
|---|---|---|---|
| Запросы/ответы REST | API-шлюз | Сервис Order |
HTTP запрос и ответ |
| Издатель/подписчик | Сервис Order History |
Сервис Order |
Доменное событие |
| Асинхронные запросы и ответы | Сервис Order |
Сервис Kitchen |
Командное и ответное сообщения |
Интеграционные тесты с сохранением¶
Обычно сервисы хранят информацию в базах данных. Чтобы убедиться в корректной работе сервиса, мы должны написать интеграционные тесты с сохранением, которые проверяют, работает ли логика доступа к БД так, как мы ожидаем.
Этапы интеграционного теста следующие:
- Подготовка — подготавливает БД, создавая ее схему и приводя ее к известному состоянию. Этот этап может также инициировать транзакцию
- Выполнение — выполняет операцию с БД
- Проверка — делает вывод о состоянии БД и извлеченных из нее объектов
- Очистка — необязательный этап, отменяющий изменения, например, путём отмены инициированной на этапе подготовки транзакции
Дальше в книге идут примеры тестов на основе контрактов с применением Spring Cloud Contract. В главе 9 указано, что помимо это фреймворка есть фреймворк Pact с поддержкой dotNET. Оставляю примеры без разбора.
Дата создания : 1 августа 2022 г.