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> |
Модели Тестовых Данных
| Поле | Тип | Обязательность | Значение По Умолчанию | Описание |
|---|
TenantId | TenantId | Да | <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 name | Given | When | Then |
|---|
<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.
Обратные ссылки
Автоссылки: где используется этот документ.