Задать вопрос
dedmagic
@dedmagic

Как тестировать бизнес-логику верхнего уровня?

Сформулирую вопрос на конкретном примере.
Пусть для того, чтобы контроллер (MVC только для примера, вопрос не связан с какой-либо конкретной технологией) вернул необходимые данные, нужно проделать следующее:
1. Извлечь данные из хранилища.
2. Отфильтровать их.
3. Отсортировать.
4. Выделить страницу для отображения (пагинация).

Каждое из этих четырёх элементарных действий очень просто покрыть модульными тестами.
Но всё равно где-то должен быть код, который вызовет эти методы последовательно и сформирует данные для передачи на Presentation Layer.
Вопрос: где должен располагаться этот код?
1. Если в контроллере, мы получаем лёгкость тестирования бизнес-логики, но при этом Толстый Тупой Уродливый Контроллер (т.к. в нём бизнес-логика).
2. Если мы такой метод создадим в слое бизнес-логики, то он будет публичным, а элементарные методы -- приватными. И т.к. мы должны тестировать только публичные методы (API класса), то нам нужно писать тесты на этот всеобъемлющий метод, что является адским адом.

Где должен быть этот код (в контексте модульного тестирования)?
  • Вопрос задан
  • 957 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@maltsever
Привет! Если нужно оттестить всю последовательность вместе (пункты 1-4), то я бы использовал функциональные тесты, а не модульные. Они как раз и нужны для того, чтобы тестировать как работает фича в целом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы