考虑如下接口:
- interface DemoService {
- void log(String name, Object o1, Object o2);
- }
接口实现类略。
现在有个组件使用了 Demo Service
- @Component
- public class UserService {
- @Autowired
- DemoService demoService;
- public void create(User user) {
- demoService.log("aa", user, null);
-
- }
- }
如何编写测试用例的时候, Mock掉Demo.log呢?
- 首先在 UserServiceTest.java中,定义 @InjectMocks private userService;
- 然后定义 @org.mockito.mock DemoService demoService;
- 最后在测试代码调用 userService.create之前,写如下代码:
doNothing().when(demoService).log(Mockito.anyString(), Mockito.any(), Mockito.any());
如果要Mock实体类,方法类似,同样先用 @org.mockito.Mock XXXclass xxx;然后用:
Mockito.when(xxx.被Mock的方法名("参数列表")).thenReturn(xxxx)); 即可。