mybatis-plus 的crud接口中提供了这样的方法
/**
*
* 根据 entity 条件,查询全部记录
*
*
* @param queryWrapper 实体对象封装操作类(可以为 null)
* @return 实体集合
*/
List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);
通过使用wrapper对象,在service层调用的时候就可以更具需要去提供不同的查询条件,比如这样
List plainUsers3 = userMapper.selectList(new LambdaQueryWrapper()
.nested(i -> i.eq(User::getRoleId, 2L).or().eq(User::getRoleId, 3L))
.and(i -> i.ge(User::getAge, 20)));
那这个时候就出现了一个问题,如果这个传入的QueryWrapper对象本身的逻辑有问题的话,使用模拟的mapper对象就没有办法测试出问题。
在给dao层写测试的时候会在测试类上加上如下注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:spring.xml")
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
destroy-method="close">
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
value="com.example.demo.mapper"/>
并通过配置文件来注入依赖并运行测试。
那么,该如何修改这个配置文件才能在运行service层的单元测试的时候给service注入真实的mapper对象?