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