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

2020-11-20  本文已影响0人  cmeizu

需求: 单元测试的时候执行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);
上一篇 下一篇

猜你喜欢

热点阅读