美文网首页
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