При применении good practices, описанных в посте, у вас в методе контроллера обычно будет вызов сервиса, содержащего бизнес логику. Сам сервис имеет явные зависимости, и юнит тесты на бизнес логику будут написаны на него.
Если же роль сервиса будет выполнять сам контроллер, то по помимо тестов на обработку невалидного состояния модели, на различные типы ответов (с разными HTTP кодами, например), которые как раз относятся к ответственности контроллера, будет необходимость так же писать тесты на бизнес логику.
Добавлю еще один кейс: тестируемость.
При применении good practices, описанных в посте, у вас в методе контроллера обычно будет вызов сервиса, содержащего бизнес логику. Сам сервис имеет явные зависимости, и юнит тесты на бизнес логику будут написаны на него.
Если же роль сервиса будет выполнять сам контроллер, то по помимо тестов на обработку невалидного состояния модели, на различные типы ответов (с разными HTTP кодами, например), которые как раз относятся к ответственности контроллера, будет необходимость так же писать тесты на бизнес логику.