赞
踩
1. mock Mybatis-plus 自带 ServiceImpl方法问题
分析
mybatis-plus 自带的ServiceImpl,其实其最后执行使用的是我们所创建的Mapper,他最终会注入到 ServiceImpl的baseMapper中
- 示例
业务代码
// 实体
public class UtilSaleData {
}
// mapper
public interface UtilSaleDataMapper extends BaseMapper<UtilSaleData> {
}
// service
public class UtilSaleDataServiceImpl extends ServiceImpl<UtilSaleDataMapper, UtilSaleData> implements UtilSaleDataService {
@Override
public List<UtilSaleData> selectSaleDataList(String id) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<UtilSaleData>()
.eq(StringUtils.isNotBlank(id), UtilSaleData::getId, id);
return list(queryWrapper);
}
测试代码
@RunWith(MockitoJUnitRunner.class) // 使用Mockito运行器 public class MockTest { @InjectMocks // 被测对象 private UtilSaleDataServiceImpl productService; @Mock // mock模拟对象依赖注入 private UtilSaleDataMapper mapper; @Test public void findProductByIdTest2() { List<UtilSaleData> list = new ArrayList<>(); UtilSaleData utilSaleData = new UtilSaleData(); utilSaleData.setId("22222"); list.add(utilSaleData); // 模拟结果 selectList 结果 Mockito.when(mapper.selectList(any())).thenReturn(list); List<UtilSaleData> list1 = productService.selectSaleDataList("1"); System.out.println(list1); } } ```
依赖
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.7.7</version>
<scope>test</scope>
</dependency>
解释
我想要mock的方法是selectSaleDataList方法里面的 list(queryWrapper)方法结果,使其不调用数据库,但是list实际调用的是mapper的selectList方式,所以上面mock时用的是Mockito.when(mapper.selectList(any())).thenReturn(list)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。