Mockito Mybatis-plus 单元测试

1. mock Mybatis-plus 自带 ServiceImpl方法问题

  • 分析
    mybatis-plus 自带的ServiceImpl,其实其最后执行使用的是我们所创建的Mapper,他最终会注入到 ServiceImpl的baseMapper中
    - 示例

    1. 业务代码

      // 实体
      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);
          }
      
    2. 测试代码

      	@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);
      	    }
      	
      	}
      	```
      
      
    3. 依赖

              <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)

相关推荐

  1. Mockito Mybatis-plus 单元测试

    2024-04-28 20:58:03       35 阅读
  2. 软件测试——单元测试

    2024-04-28 20:58:03       57 阅读
  3. 单元测试和集成测试

    2024-04-28 20:58:03       28 阅读
  4. 软件测试单元测试

    2024-04-28 20:58:03       26 阅读
  5. spring 单元测试 Junit

    2024-04-28 20:58:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 20:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 20:58:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 20:58:03       82 阅读
  4. Python语言-面向对象

    2024-04-28 20:58:03       91 阅读

热门阅读

  1. Qt——置灰窗口

    2024-04-28 20:58:03       33 阅读
  2. 官网设计UI设计需要考虑哪些?

    2024-04-28 20:58:03       28 阅读
  3. RTCRTC

    2024-04-28 20:58:03       30 阅读
  4. Unity中的C#事件与回调:一个简单的实例分析

    2024-04-28 20:58:03       36 阅读
  5. Lua语法

    Lua语法

    2024-04-28 20:58:03      27 阅读
  6. Excel常用函数

    2024-04-28 20:58:03       32 阅读
  7. 发布自己的npm包

    2024-04-28 20:58:03       26 阅读
  8. 【VUE】moment.js 时间日期格式化工具

    2024-04-28 20:58:03       33 阅读
  9. vue3 ts table合计样式更改

    2024-04-28 20:58:03       27 阅读
  10. MySQL详细步骤及案列

    2024-04-28 20:58:03       31 阅读
  11. maya 设置半径 获取时长,设置时长

    2024-04-28 20:58:03       31 阅读