pay:修复单元测试的报错

This commit is contained in:
YunaiV 2023-10-24 08:12:38 +08:00
parent df2b1b45a4
commit 3f32c4488e
2 changed files with 20 additions and 26 deletions

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.pay.service.order;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.pay.core.client.PayClient; import cn.iocoder.yudao.framework.pay.core.client.PayClient;
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO;
import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum; import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum;
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum; import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
@ -67,8 +66,6 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
@Resource @Resource
private PayOrderExtensionMapper orderExtensionMapper; private PayOrderExtensionMapper orderExtensionMapper;
@MockBean
private PayClientFactory payClientFactory;
@MockBean @MockBean
private PayProperties properties; private PayProperties properties;
@MockBean @MockBean
@ -351,7 +348,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
.thenReturn(channel); .thenReturn(channel);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法 // mock 方法
PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o -> PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o ->
o.setChannelErrorCode("001").setChannelErrorMsg("模拟异常")); o.setChannelErrorCode("001").setChannelErrorMsg("模拟异常"));
@ -405,7 +402,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
.thenReturn(channel); .thenReturn(channel);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法支付渠道的调用 // mock 方法支付渠道的调用
PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o -> o.setChannelErrorCode(null).setChannelErrorMsg(null) PayOrderRespDTO unifiedOrderResp = randomPojo(PayOrderRespDTO.class, o -> o.setChannelErrorCode(null).setChannelErrorMsg(null)
.setDisplayMode(PayOrderDisplayModeEnum.URL.getMode()).setDisplayContent("tudou")); .setDisplayMode(PayOrderDisplayModeEnum.URL.getMode()).setDisplayContent("tudou"));
@ -463,7 +460,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient 已支付 // mock 方法PayClient 已支付
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client); when(channelService.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class, when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()))); o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus())));
@ -482,7 +479,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient 已支付 // mock 方法PayClient 已支付
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client); when(channelService.getPayClient(eq(orderExtension.getChannelId()))).thenReturn(client);
when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class, when(client.getOrder(eq(orderExtension.getNo()))).thenReturn(randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.WAITING.getStatus()))); o -> o.setStatus(PayOrderStatusEnum.WAITING.getStatus())));
@ -639,7 +636,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// 准备参数 // 准备参数
PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setId(10L) PayChannelDO channel = randomPojo(PayChannelDO.class, o -> o.setId(10L)
.setFeeRate(0.1D)); .setFeeRate(10D));
PayOrderRespDTO notify = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO notify = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusRespEnum.SUCCESS.getStatus()) o -> o.setStatus(PayOrderStatusRespEnum.SUCCESS.getStatus())
.setOutTradeNo("P110")); .setOutTradeNo("P110"));
@ -656,12 +653,12 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
.setChannelId(10L).setChannelCode(channel.getCode()) .setChannelId(10L).setChannelCode(channel.getCode())
.setSuccessTime(notify.getSuccessTime()).setExtensionId(orderExtension.getId()).setNo(orderExtension.getNo()) .setSuccessTime(notify.getSuccessTime()).setExtensionId(orderExtension.getId()).setNo(orderExtension.getNo())
.setChannelOrderNo(notify.getChannelOrderNo()).setChannelUserId(notify.getChannelUserId()) .setChannelOrderNo(notify.getChannelOrderNo()).setChannelUserId(notify.getChannelUserId())
.setChannelFeeRate(0.1D).setChannelFeePrice(1); .setChannelFeeRate(10D).setChannelFeePrice(1);
assertPojoEquals(order, orderMapper.selectOne(null), assertPojoEquals(order, orderMapper.selectOne(null),
"updateTime", "updater"); "updateTime", "updater");
// 断言调用 // 断言调用
verify(notifyService).createPayNotifyTask(eq(PayNotifyTypeEnum.ORDER.getType()), verify(notifyService).createPayNotifyTask(eq(PayNotifyTypeEnum.ORDER.getType()),
eq(orderExtension.getOrderId())); eq(orderExtension.getOrderId()));
} }
@Test @Test
@ -874,7 +871,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 异常 // mock 方法PayClient 异常
when(client.getOrder(any())).thenThrow(new RuntimeException()); when(client.getOrder(any())).thenThrow(new RuntimeException());
@ -901,7 +898,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 成功返回 // mock 方法PayClient 成功返回
PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus())); o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()));
@ -935,7 +932,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 成功返回 // mock 方法PayClient 成功返回
PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus())); o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()));
@ -966,7 +963,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// 调用 // 调用
int count = orderService.expireOrder(); int count = orderService.expireOrder();
@ -1013,7 +1010,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 退款返回 // mock 方法PayClient 退款返回
PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.REFUND.getStatus())); o -> o.setStatus(PayOrderStatusEnum.REFUND.getStatus()));
@ -1047,7 +1044,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 成功返回 // mock 方法PayClient 成功返回
PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus())); o -> o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()));
@ -1081,7 +1078,7 @@ public class PayOrderServiceTest extends BaseDbAndRedisUnitTest {
orderExtensionMapper.insert(orderExtension); orderExtensionMapper.insert(orderExtension);
// mock 方法PayClient // mock 方法PayClient
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法PayClient 关闭返回 // mock 方法PayClient 关闭返回
PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class, PayOrderRespDTO respDTO = randomPojo(PayOrderRespDTO.class,
o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus())); o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()));

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.pay.service.refund;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.pay.core.client.PayClient; import cn.iocoder.yudao.framework.pay.core.client.PayClient;
import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory;
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO;
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundUnifiedReqDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundUnifiedReqDTO;
import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum; import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum;
@ -67,8 +66,6 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
@MockBean @MockBean
private PayProperties payProperties; private PayProperties payProperties;
@MockBean @MockBean
private PayClientFactory payClientFactory;
@MockBean
private PayOrderService orderService; private PayOrderService orderService;
@MockBean @MockBean
private PayAppService appService; private PayAppService appService;
@ -335,7 +332,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
when(channelService.validPayChannel(eq(1L))).thenReturn(channel); when(channelService.validPayChannel(eq(1L))).thenReturn(channel);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 数据refund 已存在 // mock 数据refund 已存在
PayRefundDO refund = randomPojo(PayRefundDO.class, o -> PayRefundDO refund = randomPojo(PayRefundDO.class, o ->
o.setAppId(1L).setMerchantRefundId("200")); o.setAppId(1L).setMerchantRefundId("200"));
@ -367,7 +364,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
when(channelService.validPayChannel(eq(10L))).thenReturn(channel); when(channelService.validPayChannel(eq(10L))).thenReturn(channel);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法client 调用发生异常 // mock 方法client 调用发生异常
when(client.unifiedRefund(any(PayRefundUnifiedReqDTO.class))).thenThrow(new RuntimeException()); when(client.unifiedRefund(any(PayRefundUnifiedReqDTO.class))).thenThrow(new RuntimeException());
@ -411,14 +408,14 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
when(channelService.validPayChannel(eq(10L))).thenReturn(channel); when(channelService.validPayChannel(eq(10L))).thenReturn(channel);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法client 成功 // mock 方法client 成功
PayRefundRespDTO refundRespDTO = randomPojo(PayRefundRespDTO.class); PayRefundRespDTO refundRespDTO = randomPojo(PayRefundRespDTO.class);
when(client.unifiedRefund(argThat(unifiedReqDTO -> { when(client.unifiedRefund(argThat(unifiedReqDTO -> {
assertNotNull(unifiedReqDTO.getOutRefundNo()); assertNotNull(unifiedReqDTO.getOutRefundNo());
assertThat(unifiedReqDTO) assertThat(unifiedReqDTO)
.extracting("payPrice", "refundPrice", "outTradeNo", .extracting("payPrice", "refundPrice", "outTradeNo",
"notifyUrl", "reason") "notifyUrl", "reason")
.containsExactly(order.getPrice(), reqDTO.getPrice(), order.getNo(), .containsExactly(order.getPrice(), reqDTO.getPrice(), order.getNo(),
"http://127.0.0.1/10", reqDTO.getReason()); "http://127.0.0.1/10", reqDTO.getReason());
return true; return true;
@ -668,7 +665,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
refundMapper.insert(refund); refundMapper.insert(refund);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法client 返回指定状态 // mock 方法client 返回指定状态
PayRefundRespDTO respDTO = randomPojo(PayRefundRespDTO.class, o -> o.setStatus(status)); PayRefundRespDTO respDTO = randomPojo(PayRefundRespDTO.class, o -> o.setStatus(status));
when(client.getRefund(eq("P110"), eq("R220"))).thenReturn(respDTO); when(client.getRefund(eq("P110"), eq("R220"))).thenReturn(respDTO);
@ -690,7 +687,7 @@ public class PayRefundServiceTest extends BaseDbAndRedisUnitTest {
refundMapper.insert(refund); refundMapper.insert(refund);
// mock 方法client // mock 方法client
PayClient client = mock(PayClient.class); PayClient client = mock(PayClient.class);
when(payClientFactory.getPayClient(eq(10L))).thenReturn(client); when(channelService.getPayClient(eq(10L))).thenReturn(client);
// mock 方法client 抛出异常 // mock 方法client 抛出异常
when(client.getRefund(eq("P110"), eq("R220"))).thenThrow(new RuntimeException()); when(client.getRefund(eq("P110"), eq("R220"))).thenThrow(new RuntimeException());