From 81b6340bcbbb148b4d72da5223b1d82268508583 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 22 Jan 2025 17:49:59 +0800 Subject: [PATCH] refactor(测试用例):优化实体验证工具类并调整测试用例 --- src/test/java/cc/mrbird/febs/AgentTest.java | 22 ++++++++-- src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java | 66 +++++++++++++++++++++------------ 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java index cb347fb..c766630 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java +++ b/src/main/java/cc/mrbird/febs/common/utils/ValidateEntityUtils.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.exception.FebsException; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import java.util.ArrayList; @@ -14,16 +15,16 @@ */ public class ValidateEntityUtils { - /** * 确保指定列的有效性,并返回相应的实体对象 - * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象 - * 如果指定的值不存在或为null,将抛出异常 + * 此方法用于验证数据库中某列的值是否存在,并返回包含该值的实体对象 + * 如果指定的值不存在或为null,将抛出异常 * * @param valueToCheck 需要验证的值 * @param columnExtractor 列值提取器,用于指定需要验证的列 * @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询 * @param errMsg 错误消息格式字符串 + * @param columnExtractors 可变参数(varargs)查询字段,可选,如果没有就是查询全部 * @param <T> 实体类类型 * @param <R> 列值类型 * @param <V> 需要验证的值的类型 @@ -35,34 +36,47 @@ V valueToCheck, SFunction<T, R> columnExtractor, SFunction<LambdaQueryWrapper<T>, T> queryWrapperExtractor, - String errMsg) { - // 检查需要验证的值是否为null + String errMsg, + SFunction<T, R>... columnExtractors) { + + // 检查输入参数是否为null if (valueToCheck == null) { throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntity column"); } + if (columnExtractor == null || queryWrapperExtractor == null) { + throw new IllegalArgumentException("Column extractor and query wrapper extractor cannot be null while ensureColumnReturnEntity column"); + } + T entity = null; try { // 创建LambdaQueryWrapper并配置查询条件 - LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>(); - wrapper.select(columnExtractor) - .eq(columnExtractor, valueToCheck); + LambdaQueryWrapper<T> wrapper = Wrappers.lambdaQuery(); + if (columnExtractors != null && columnExtractors.length > 0) { + wrapper.select(columnExtractors); + } + wrapper.eq(columnExtractor, valueToCheck); // 执行查询并获取结果实体 entity = queryWrapperExtractor.apply(wrapper); + + // 如果查询结果为空,则抛出异常 + if (entity == null) { + throw new FebsException(StrUtil.format(errMsg, valueToCheck)); + } + + // 提取查询结果中的列值 + R columnValue = columnExtractor.apply(entity); + // 如果列值为null,则抛出异常 + if (columnValue == null) { + throw new FebsException(StrUtil.format(errMsg, valueToCheck)); + } + + } catch (FebsException e) { + // 记录异常日志 + throw e; } catch (Exception e) { // 记录异常日志 - throw new FebsException(StrUtil.format("An error occurred while ensureColumnReturnEntity column: {}", valueToCheck)); - } - // 如果查询结果为空,则抛出异常 - if (entity == null) { - throw new FebsException(StrUtil.format(errMsg, valueToCheck)); - } - - // 提取查询结果中的列值 - R columnValue = columnExtractor.apply(entity); - // 如果列值为null,则抛出异常 - if (columnValue == null) { - throw new FebsException(StrUtil.format(errMsg, valueToCheck)); + throw new FebsException(StrUtil.format("An error occurred while ensuring column return entity: {}", valueToCheck)); } // 返回查询到的实体类对象 @@ -78,6 +92,7 @@ * @param columnExtractor 列值提取器,用于指定需要验证的列 * @param queryWrapperExtractor 查询包装器提取器,用于执行数据库查询 * @param errMsg 错误消息格式字符串 + * @param columnExtractors 可变参数(varargs)查询字段,可选,如果没有就是查询全部 * @param <T> 实体类类型 * @param <R> 列值类型 * @param <V> 需要验证的值的类型 @@ -89,7 +104,8 @@ V valueToCheck, SFunction<T, R> columnExtractor, SFunction<LambdaQueryWrapper<T>, List<T>> queryWrapperExtractor, - String errMsg) { + String errMsg, + SFunction<T, R>... columnExtractors) { // 检查需要验证的值是否为null if (valueToCheck == null) { throw new IllegalArgumentException("The value to check cannot be null while ensureColumnReturnEntityList column"); @@ -97,9 +113,11 @@ List<T> entities = new ArrayList<>(); try { // 创建LambdaQueryWrapper并配置查询条件 - LambdaQueryWrapper<T> wrapper = new LambdaQueryWrapper<>(); - wrapper.select(columnExtractor) - .eq(columnExtractor, valueToCheck); + LambdaQueryWrapper<T> wrapper = Wrappers.lambdaQuery(); + if (columnExtractors != null && columnExtractors.length > 0) { + wrapper.select(columnExtractors); + } + wrapper.eq(columnExtractor, valueToCheck); // 执行查询并获取结果实体列表 entities = queryWrapperExtractor.apply(wrapper); diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java index d419d83..dbabf76 100644 --- a/src/test/java/cc/mrbird/febs/AgentTest.java +++ b/src/test/java/cc/mrbird/febs/AgentTest.java @@ -24,11 +24,23 @@ MallMemberCouponMapper mallMemberCouponMapper; @Test public void getCouponAmountMap() { - MallMemberCoupon mallMemberCoupon = ValidateEntityUtils.ensureColumnReturnEntity(209L, MallMemberCoupon::getId, mallMemberCouponMapper::selectOne, "id{}不存在"); - List<MallMemberCoupon> mallMemberCoupons = ValidateEntityUtils.ensureColumnReturnEntityList(209L, MallMemberCoupon::getId, mallMemberCouponMapper::selectList, "id{}不存在"); - ValidateEntityUtils.ensureColumnValid(205L, MallMemberCoupon::getId, mallMemberCouponMapper::selectOne, "id{}不存在"); - ValidateEntityUtils.ensureUnique(205L, MallMemberCoupon::getId, mallMemberCouponMapper::selectCount, "id{}已存在"); - ValidateEntityUtils.ensureEqual(205L, 206L, "{},{},值不相等"); + MallMemberCoupon mallMemberCoupon = ValidateEntityUtils.ensureColumnReturnEntity( + 205L, + MallMemberCoupon::getId, + mallMemberCouponMapper::selectOne, + "id{}不存在" + ); +// System.out.println(JSONUtil.parseObj(mallMemberCoupon)); +// ValidateEntityUtils.ensureEqual(mallMemberCoupon.getState(), OrderStatusEnum.WAIT_SHIPPING.getValue(), "订单状态不是待发货状态"); + List<MallMemberCoupon> mallMemberCoupons = ValidateEntityUtils.ensureColumnReturnEntityList( + 209L, + MallMemberCoupon::getId, + mallMemberCouponMapper::selectList, + "id{}不存在", + MallMemberCoupon::getId); +// ValidateEntityUtils.ensureColumnValid(205L, MallMemberCoupon::getId, mallMemberCouponMapper::selectOne, "id{}不存在"); +// ValidateEntityUtils.ensureUnique(205L, MallMemberCoupon::getId, mallMemberCouponMapper::selectCount, "id{}已存在"); +// ValidateEntityUtils.ensureEqual(205L, 206L, "{},{},值不相等"); // // 使用未编码的经纬度字符串 // String url = "https://revgeocode.search.hereapi.com/v1/revgeocode?at=48.2181679,16.3899064&lang=en-US&apiKey=21tSClSPVotUklhRA4GIgECwZ0S6MmJ73TJ8v8ojDuo"; -- Gitblit v1.9.1