美文网首页
java单元测试中对于Mybatis自带save()方法处理的小

java单元测试中对于Mybatis自带save()方法处理的小

作者: cmeizu | 来源:发表于2020-11-20 16:10 被阅读0次

需求: 单元测试的时候执行save()方法也能返回一个id值

  1. 正常 执行的情况下,执行save方法会生成一个id.如:
User user = new User();
user.setName("张三").setAge(18).setSex("M");
userMapper.save(user)
log.info("用户id:{}",user.getId());
输入出:
用户id:1
  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);

相关文章

网友评论

      本文标题:java单元测试中对于Mybatis自带save()方法处理的小

      本文链接:https://www.haomeiwen.com/subject/gyndiktx.html