在近些天单元测试的过程中,遇到了各种需要使用Mock的情况,现总结记录。
测试背景如下(虚构):
QueryInfoController.java文件提供查询数据的接口;
QueryService.java调用Dao层查询数据;
QueryInfoControllerTest.java对QueryInfoController.java进行单元测试;
现分情况对Mock进行说明:
1、对带返回值的service方法进行Mock
QueryService queryService = PowerMockito.mock(QueryService.class);
ReflectionTestUtils.setFiled(queryInfoController, "queryService ", queryService );
PowerMockito.when(queryService.queryInfo(Mockito.anyMap())).thenReturn(youList);
在测试环境下,我们不一定需要真正去查询数据库或者说也没有必要查询数据库。因为在对controller层进行单元测试之前,对Dao层和Service层的测试应该是通过了的。所以这时可以省略service操作,用Mock代替。在本例中,先对QueryService进行Mock,然后设定其有效区域,即“queryInfoController”。所以在这之前,我们需要
@Autowired
private QueryInfoController queryInfoController;
<