卓越工程之单元测试在行权鉴权中的实践
前言
1.全书内容比较枯燥乏味,虽然有部分代码示例,但是语言并不生动,让人坚持读下去就很难。
流程
1.用户发起查询时,首先判断用户传入的参数中是否包含行权验证的字段,如果不包含则直接抛出异常,提示鉴权失败;
等值匹配(=)
前缀匹配(like xxx%)
后缀匹配(like %xxx)
模糊匹配(like %xxx%)
测试边界
撰写单元测试
引入依赖
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
模拟方法
// 需要模拟的外部依赖
private ArkDataSetReadService arkDataSetReadService;
// 需要进行测试的类
private ComponentJobExecuteService componentJobExecuteService;
Response<RowPermissionQueryResponseDto> response = JSON.parseObject(permissionData, Response.class);
Mockito.doReturn(response).when(arkDataSetReadService).getUserRowPermissions(911L, 1741141);
●通过文本的方式构造模拟的返回值。
Map<String, Pair<String, List<String>>> filterParams = new HashMap<>();
Whitebox.invokeMethod(componentJobExecuteService, "checkRowPermission", 911L, filterParams)
(expected = AuthException.class)
public void testRowPermission() throws Exception {
ContextInfo contextInfo = new ContextInfo();
contextInfo.setBucId(1741141);
ContextInfoHolder.setContextInfo(contextInfo);
Response<RowPermissionQueryResponseDto> response = JSON.parseObject(permissionData, Response.class);
Mockito.doReturn(response).when(arkDataSetReadService).getUserRowPermissions(911L, 1741141);
Map<String, Pair<String, List<String>>> filterParams = new HashMap<>();
Whitebox.invokeMethod(componentJobExecuteService, "checkRowPermission", 911L, filterParams);
}
总结
往期推荐
《Java工程师必读手册》
工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工匠精神”——一种追求“以术得道”的精神。如果一个工匠只满足于“术”,不能追求“术”到极致去悟“道”,那只是一个靠“术”养家糊口的工匠而已。作者根据多年来的实践探索,总结了大量的Java编码之“术”,试图阐述出心中的Java编码之“道”。
点击阅读原文查看详情。
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章