давай так. Вот есть тот контроллер, что есть и ты хочешь покрыть его тестами.
есть по сути один ифчик, значит 2 кейса. Когда юзер бот и когда не бот. + потом еще до кейс, мобайл или нет.
итого ты подготовишь 3 юзер агента для своего теста, который будут определятся как бот и мобайл или десктоп
завтра ты обновишь свою либу и твои тесты упадут, потому что один из твоих захардкоженых юзер агентов перестанет определятся как мобайл, или наоборот, начнет определятся как бот.
У тебя падают билды, никто не релизится, у всех паника пока ты разбираешься почему тесты упали, ведь никто не трогал в этом контроллере ничего
вариант 2:
ты берешь нормальный сервис без внутреннего стейта и передаешь его как зависимость в контроллер
в тесте у тебя все теже 3 кейса, только не с хардкоженными юзер агентами, а с парой булевых флагов isBot\isMobile которыми ты мокаешь свою зависимость. Тесты стабильны, все довольны.
зы. маленький бонус, ваш продукт вырос, нагрузки большие и вы прикрутили свуле или что-то подобное. Стейтфул сервисы вынудят тебя ресетить контейнер на каждом запросе, иначе в сервисах останется мусор от предыдущего исполнения. Тоже самое кстати и без свуле с очередями, после каждого обработаного сообщение придется ресетить контейнер