2016-01-11 3 views
1

При тестировании контроллера Spring с Spring Test MVC мы в настоящее время настраиваем базу данных с помощью DBUnit, и мы не издеваемся над методами обслуживания.Контрольные контроллеры Spring: вызовите методы обслуживания или результаты макета

Хотя это немного замедляет наши тесты (мы используем встроенную базу данных H2), наши тесты намного чисты, без необходимости заглушать методы и создавать тестовые сборщики данных/фабричные методы.

Что вы думаете об этом? Будем ли мы сожалеть об этом подходе, можете ли вы дать какие-либо рекомендации по альтернативным подходам?

ответ

2

Я бы сказал, что Mocking следует использовать только тогда, когда это необходимо для проверки автономного поведения класса или компонента, а издеваемое свойство возникает из-за пределов приложения (например, сервера электронной почты). Поведение намного более предсказуемо, чем если вы пересекаете несколько слоев, для доступа к БД. Существует хорошая статья по этому вопросу: http://blog.trifork.com/2012/12/11/properly-testing-spring-mvc-controllers/

Но с другой стороны, вы имеете интеграции тесты, блок, функциональные и т.д., когда лучше избегать Mocks. Это действительно зависит от того, что вам действительно нужно.

Пожалуйста, прочтите также это, есть хорошая дискуссия на нем: Integration test per layer is a good practice?

+1

Спасибо, я думаю, так как услуги, которые наши контроллеры призывают не удаленные вызовов, которые я собираюсь позволить контролерам выполнять вызовы служб и маркировать их как интеграционные тесты. Я думаю, что мы только вырвем Мокито, если это действительно необходимо. –

Смежные вопросы