Проблема тестирования интеграций сложной системы с внешним миром - хочется интегрировать тестовую зону с тестовой зоной мира. А лучше с несколькими.
Типовое решение - тупой мок. На запрос такой-то ответь так-то.
Но хочется более сложного поведения.
- Тест в предусловии говорит USTMock - на обращение такое-то ответь мне так-то. Идеально, если одно из полей - trace_id.
- Тест в действие пинает система А.
- Система А что-то начинает делать. Возможно это комлекс систем. Не важно, рассматриваем как одну.
- Система А в рамках какого-то действия идёт "наружу" к USTMock.
- USTMock иденитифицирует запрос - что это то, что мы ждали и отдаёт данные подготовленные тестом.
- Система А что-то делает дальше.
- Тест проверяет кишки Системы А до отправки запроса наружу (не обязательно).
- Тест спрашивает USTMock - забрала ли система данные (не обязательно).
- Тест проверяет кишки Системы А и результат.
1-4 5.0. STMock иденитифицирует запрос - что это то, что мы ждали 5.1. запрос подвешиваем, тесту говорим что запрос пришёл 5.2. тест пинает систему B, формирует изменения ответа USTMock системе А 5.3. отдаём ответ от USTMock 6. Системы А и B делает что-то дальше 9. Тест проверяет кишки Системы А, B и результат.
Эмулируем из теста. USTMock не нужен.
- Система А отправляет сообщение в очередь и ожидает ответ от внешней системы
- Читаем из теста, отвечаем из теста. USTMock не нужен.