Мне хотелось обсудить, всегда ли нужно выбирать интеграционные тесты в подобных ситуациях, или иногда юнит-тесты с моками бывают полезны?
ИМХО от проекта и ресурсов зависит, а также КПД конкретных действий. Скажу возможно крамольную мысль, но если требуются моки-значит проеб в архитектуре/коде налицо :) Я пришел достаточно давно к идее, что лишний код(а моки, даже пусть и через использование условно удобных фреймворков)-это ненужный код, поэтому весь не тестовый код-должен быть используемым и в проде. И тут сложность возникает написать код так-чтобы его можно было использовать вместо моков в тестах, и при этом тесты не были бы хрупкими, и не усложнялся бы раскоп проблем, если сломался смежный код, а не основной тестируемый. При таком подходе спасает группировка тестов по уровням-уровень общих компонентов(которые используются дальше), более высокий уровень, интеграционные тесты