【已解决】做单元测试的时候发现mapper层的对象总是报空指针,发现是数据权限的问题

KOCA版本 :4.6
KOCA模块 :定时任务
模块版本 :4.6
场景 :单元测试,开启数据权限校验
问题 :mapper查询报空指针
报错细节 :debug定位发现报错如下


获取当前用户为空,因为是单元测试,当前用户必然为空。有办法在不关闭数据权限配置的的情况下正常查询吗?
尝试解决方案:通过自己实现AuthService接口暂时解决。但是框架是否可以判断是单元测试还是正式接口调用?不报空指针?

KOCA版本 :3.x
KOCA模块 :定时任务
模块版本 :3.x
场景 :单元测试,开启数据权限校验
问题 :mapper查询报空指针
报错细节 :debug定位发现报错如下


获取当前用户为空,因为是单元测试,当前用户必然为空。有办法在不关闭数据权限配置的的情况下正常查询吗?
尝试解决方案:是否可以检测是正常启动,还是执行单元测试,从而避免查询当前用户?

你好,可以通过PowerMockito来mock一个TrustedPrincipal,当有调AuthContextHolder.getPrincipal时就不会报空指针

    @Before
    public void setUp() throws Exception {
        PowerMockito.mockStatic(AuthContextHolder.class);

        TrustedPrincipal principal = new TrustedPrincipal();
        principal.setUserNo("TestUserNo");

        PowerMockito.doReturn(principal).when(AuthContextHolder.class, "getPrincipal");
    }

需要引jar包

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <scope>test</scope>
        </dependency>

感谢,有用的 :+1: