需求: 单元测试的时候执行save()方法也能返回一个id值
- 正常 执行的情况下,执行save方法会生成一个id.如:
User user = new User();
user.setName("张三").setAge(18).setSex("M");
userMapper.save(user)
log.info("用户id:{}",user.getId());
输入出:
用户id:1
- 但是在单元测试的时候输出的结果是null;
用户id:null
解决问题:
Mockito.when(userService.save(any())).thenAnswer(invocationOnMock -> {
User order = invocationOnMock.getArgument(0);
//设置返回的id
order.setId(1);
return true;
});
问题2:使用lambda表达作查询的时候,单元测试会报错.
List<User> users = list(Wrappers.lambdaQuery(User.class)
.select(User::getId, User::getName, User::getAge, User::getSex)
.orderByDesc(User::getId)
.last("limit 3"));
报错为:
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: can not find lambda cache for this entity
原因写得很清楚那就是实体类没有初始化嘛.
解决方法就是把其初始化:
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), User.class);
网友评论