当服务注入另一个服务时,Mockito不会嘲笑

时间:2018-05-04 22:18:06

标签: spring rest spring-boot mockito

我有一个springboot Rest应用程序,其中一个服务必须调用另一个服务方法。原因是在系统中创建员工时,必须为该员工创建默认角色和组。该流程是对员工控制器的REST调用 - > createEmp服务 - >这个内容叫做createrole服务&创建组服务。功能正常。问题在于Junits。当我尝试在createEmp服务中模拟creategroup和createrole调用时,正在调用实际方法。

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

请问这里有什么指示?

1 个答案:

答案 0 :(得分:0)

由于您正在为createEmp服务撰写 单元测试 ,因此您不应该关心empgroupservice和{{1}在他们内部做,即你应该在junit测试中嘲笑他们。

你可以在你的junit类中在类级别(使用empRoleservice)注入它们:

@Mock

请记住.... @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(); } ... 他们的调用作为您测试的一些期望。

PS。我还建议您遵循类名的命名约定。例如。 verify应为empGroupService