Альтернативы частичной насмешке? - PullRequest
1 голос
/ 26 января 2011

Усталый от ручной подделки, я пытаюсь представить Mockito для своего проекта.

Предположим, у меня есть набор средств доступа к базе данных, которые изолируют все запросы Hibernate для данного варианта использования (или службы).Поэтому у меня могут быть такие интерфейсы как RoutingDao, UserDao, ReportingDao.Каждый из этих интерфейсов расширяет очень общий Dao такими методами, как commit(), rollback() или reload(Entity).С Hibernate последний должен перезагрузить отдельную сущность с текущим сеансом.В тестах он должен просто возвращать свой аргумент.

С ручными имитациями это было легко: у меня был MockDao с общей реализацией этого метода, и MockRoutingDao расширил бы MockDao и использовал бы этореализация.Один из способов, который я вижу в Mockito, - это создать MockRoutingDao, который расширяет MockDao и делегирует немодулированные вызовы.Ненаследуемые методы будут посмеиваться с spy().Но это довольно уродливо - мне все еще нужно создать макет вручную, и вся идея частичного насмешки и наследования для повторного использования какой-либо реализации - беспорядок.

Как я могу улучшить это? Каковы лучшие практики для создания общей реализации для ложного метода, который может быть повторно использован во многих тестах?

1 Ответ

1 голос
/ 26 января 2011

Вы действительно хотите написать org.mockito.stubbing.Answer реализацию, которая обрабатывает общие вещи, которые обрабатывает каждый * DAO mock.

Вы все еще можете добавить пользовательскую when заглушку к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...