Mockito не издевается, когда сервис внедряется в другой сервис

У меня есть приложение Springboot Rest, в котором одна служба должна вызывать другой метод службы. Причина в том, что когда в системе создается сотрудник, он должен создать для этого сотрудника роль и группу по умолчанию. Поток - это вызов REST для контроллера Employee-> createEmp service -> этот inturn вызывает службу createrole и службу creategroup. Функционал работает нормально. Проблема с Junits. Когда я пытаюсь имитировать вызовы creategroup и createrole в сервисе createEmp, вызываются фактические методы.

IEmpGroupService empGroupService;
IEmpRoleService empRoleService;
     createEmp  { 
    //logic goes here
    emprepo.save();
    empgroupservice.createDefaultgroup();
    empRoleservice.createDefaultRole();      
    }

Здесь есть указатели, пожалуйста?

Было бы полезно, если бы вы разместили jUnits.

ndrone 05.05.2018 01:13

Можно ли разместить ваш код JUNIT?

Jose Martinez 05.05.2018 01:42
0
2
612
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы пишете модульные тесты для службы createEmp, вам не нужно заботиться о том, что empgroupservice и empRoleservice делают внутри них, т.е. вы должны имитировать их в своих тестах junit.

Вы можете внедрить их на уровне класса (используя @Mock) в свой класс junit примерно так:

....

@Mock
empgroupservice mockedEmpgroupservice;

@Mock
empRoleservice mockedEmpRoleservice;

...

public void testCreateEmp(){
    ...
    Mockito.doNothing().when(mockedEmpgroupservice).createDefaultgroup();
    Mockito.doNothing().when(empRoleservice).createDefaultRole();
    ...
    // invoke your method under test
    ...
    Mockito.verify(mockedEmpgroupservice).createDefaultgroup(customer);
    Mockito.verify(empRoleservice).createDefaultRole();
}

...

Не забывайте verify об их вызовах как о некоторых из ожиданий вашего теста.

PS. Я также предлагаю вам следовать соглашениям об именах для имен ваших классов. Например, empGroupService должен быть EmployeeGroupService.

Спасибо .. Насмешка над классом - это ключ к успеху. Однако мне пришлось использовать @Mockbean из-за зависимостей весенней загрузки ..

DHR 07.05.2018 18:13

Другие вопросы по теме