Я могу написать некоторые Unit-Tests и с этим Рефакторингом. Мы используем Hybris. То, что вы можете видеть очень часто, это Trainwrecks. Например: cmsSiteService.getCurrentSite().getSlaveSalesOrganization()
и так далее.Wrapper-Classes для Unit-Tests
Теперь, записывая Unit-Tests и издеваясь над ответами, я бы в этом случае сначала высмеял CurrentSite и объявил doReturn(currentSite).when(cmsSiteService.getCurrentSite)
, а затем doReturn(slaveSalesOrganization).when(currentSite).getSlaveSalesOrganization()
.
Этот пример довольно короткий, но с cmsSiteService это происходит по всему проекту. Поскольку cmsSiteService является сторонним классом Hybris, я подумал, что было бы неплохо написать класс-оболочку, который наследует все от CMSSiteService-Class. Там я могу написать метод getSlaveSalesOrganizationFromCurrentSite (CMSSiteService cmsSiteService), где я бы назвал все выше.
Это рекомендуется или есть лучшее решение по умолчанию?
Я думаю, что ваш вопрос может быть более ясным с некоторыми фактическими примерами. –
Что вы можете * искать * [RETURNS_DEEP_STUBS] (http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#RETURNS_DEEP_STUBS), я думаю? – kryger
Я столкнулся с тем же шаблоном в коде и решил написать один тестовый класс, который отбрасывает все общие шаблоны и обеспечивает защищенный доступ к mocks. Фактические модульные тесты затем все унаследованы от этого «супер-теста» и могут выбрать добавление посмеянного значения к отдельным элементам. – Jan