Перейти к основному содержимому

Integration Test: <Название Проверки>

Назначение

Опиши production risk, который закрывает тест: financial correctness, identity, provider callback, event consumer, idempotency, concurrency или contract compatibility.

Область Действия

ПолеЗначение
Сервис<service-name>
Feature group<feature-group>
Test project<ProjectName.IntegrationTests>
System under test<API/Command/Consumer/Background job>
Required containers<PostgreSQL/Kafka/Redis/ClickHouse/provider mock>

Модели Тестовых Данных

<TestInputModel>

ПолеТипОбязательностьЗначение По УмолчаниюОписание
TenantIdTenantIdДа<tenant>Tenant boundary.
<FieldName><Type>Да/Нет<value><описание>

Тестовый Fixture

ЭлементПравило
Database<migrations applied/seed data>
Kafka<topics/outbox/inbox setup>
Redis<cache keys seeded/empty>
Provider mock<stub behavior>
Clock<fixed DateTimeOffset>

Сценарии

Test nameGivenWhenThen
<Should...><initial state><action><expected state/events/response>

Проверки Assertions

ОбластьПроверка
HTTP/Result<status/result model/errors>
Database<entities, row versions, ledger postings>
Events<outbox messages/topic/key/typed event model>
Idempotency<duplicate request/event behavior>
Audit<audit record fields>
Observability<logs/metrics/traces if captured>

Конкурентность И Idempotency

СценарийОжидание
Duplicate command<same response/no duplicate side effects>
Parallel commands<one success/typed conflict>
Duplicate event<inbox duplicate detection>
Replay<safe replay result>

Очистка

РесурсПравило
Containers<per test class/per collection>
Test data<transaction rollback/database reset>
External mocks<reset expectations>

Критерии Acceptance

  • Тест выполняется стабильно локально и в CI.
  • Тест не зависит от порядка запуска.
  • Sensitive значения не пишутся в test output.
  • Для financial/payment/game callback flow используется Testcontainers, а не in-memory substitute.

Обратные ссылки

Автоссылки: где используется этот документ.