diff --git a/pom.xml b/pom.xml
index 1345db8..ac13eda 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,18 @@
4.2.0
test
+
+ org.mockito
+ mockito-core
+ 4.8.1
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ 4.8.1
+ test
+
diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java
index a54658f..cc443e1 100644
--- a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java
+++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v2/account/AccountService.java
@@ -26,6 +26,7 @@ public class AccountService {
* @param openAccSubRequest OpenAccSubRequest
* @return OpenAccSubResponse
*/
+ @Deprecated
public OpenAccSubResponse openAccSub(OpenAccSubRequest openAccSubRequest) {
String url = "/accInfo/openAccSub";
HttpHeaders headers = new HttpHeaders();
diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java
new file mode 100644
index 0000000..afcf2cb
--- /dev/null
+++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/TestHttpResponse.java
@@ -0,0 +1,27 @@
+package com.czcb.scfs.api.service;
+
+import com.czcb.scfs.api.core.ApiResponse;
+import com.czcb.scfs.api.core.http.HttpMethod;
+import com.czcb.scfs.api.core.http.HttpRequest;
+import com.czcb.scfs.api.core.http.HttpResponse;
+import com.czcb.scfs.api.core.http.OriginalResponse;
+
+/**
+ * @author wangwei
+ * @date 2024/4/18
+ */
+public class TestHttpResponse {
+
+ public static HttpResponse create(String url, ApiResponse apiResponse, Class responseType) {
+ return new HttpResponse.Builder()
+ .serviceResponseType(responseType)
+ .originalResponse(new OriginalResponse.Builder()
+ .request(new HttpRequest.Builder()
+ .url(url)
+ .httpMethod(HttpMethod.POST)
+ .build())
+ .body(apiResponse.toJsonResponse().getBody())
+ .build())
+ .build();
+ }
+}
diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java
deleted file mode 100644
index 4fd542c..0000000
--- a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/sms/SmsServiceTest.java
+++ /dev/null
@@ -1,4 +0,0 @@
-//package com.czcb.scfs.api.service.sms;
-//
-//class SmsServiceTest {
-//}
\ No newline at end of file
diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java
new file mode 100644
index 0000000..dd0e99d
--- /dev/null
+++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/account/AccountServiceTest.java
@@ -0,0 +1,61 @@
+package com.czcb.scfs.api.service.v2.account;
+
+import com.czcb.scfs.api.core.ApiClient;
+import com.czcb.scfs.api.core.http.HttpHeaders;
+import com.czcb.scfs.api.core.http.HttpResponse;
+import com.czcb.scfs.api.core.http.RequestBody;
+import com.czcb.scfs.api.core.util.Json;
+import com.czcb.scfs.api.service.TestHttpResponse;
+import com.czcb.scfs.api.service.v2.account.model.ClosedAccRequest;
+import com.czcb.scfs.api.service.v2.account.model.ClosedAccResponse;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+
+@ExtendWith(MockitoExtension.class)
+class AccountServiceTest {
+ @InjectMocks
+ private AccountService service;
+
+ @Mock
+ private ApiClient apiClient;
+
+ @Test
+ void closedAcc() {
+ ClosedAccRequest request = new ClosedAccRequest();
+ request.setChannelNo("setChannelNo");
+ request.setAppNo("setAppNo");
+ request.setAccountNo("setAccountNo");
+ request.setSerialNo("setSerialNo");
+ request.setTradeNo("setTradeNo");
+ request.setVerifyCode("setVerifyCode");
+ request.setTransDate("setTransDate");
+ request.setTransTradeTime("setTransTradeTime");
+
+ ClosedAccResponse response = new ClosedAccResponse();
+ response.setRecode("setRecode");
+ response.setRecodeInfo("setRecodeInfo");
+ response.setSysDate("setSysDate");
+ response.setSysTime("setSysTime");
+
+ HttpResponse httpResponse = TestHttpResponse.create("/account/v2/closed-account", response, ClosedAccResponse.class);
+
+ Mockito.when(apiClient.post(
+ Mockito.eq("/account/v2/closed-account"),
+ Mockito.any(HttpHeaders.class),
+ Mockito.any(RequestBody.class),
+ Mockito.eq(ClosedAccResponse.class)))
+ .thenReturn(httpResponse);
+
+ ClosedAccResponse result = service.closedAcc(request);
+
+ // 断言结果
+ assertThatJson(Json.toJson(result)).isEqualTo("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\"," +
+ "\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\"}");
+ }
+}
\ No newline at end of file
diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java
new file mode 100644
index 0000000..ef3d83a
--- /dev/null
+++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/v2/sms/SmsServiceTest.java
@@ -0,0 +1,79 @@
+package com.czcb.scfs.api.service.v2.sms;
+
+import com.czcb.scfs.api.core.ApiClient;
+import com.czcb.scfs.api.core.http.HttpHeaders;
+import com.czcb.scfs.api.core.http.HttpResponse;
+import com.czcb.scfs.api.core.http.RequestBody;
+import com.czcb.scfs.api.core.util.Json;
+import com.czcb.scfs.api.service.TestHttpResponse;
+import com.czcb.scfs.api.service.v2.sms.model.SendVerifySignRequest;
+import com.czcb.scfs.api.service.v2.sms.model.SendVerifySignResponse;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson;
+
+@ExtendWith(MockitoExtension.class)
+class SmsServiceTest {
+
+ @InjectMocks
+ private SmsService service;
+
+ @Mock
+ private ApiClient apiClient;
+
+ @Test
+ void send() {
+ SendVerifySignRequest request = new SendVerifySignRequest();
+ request.setChannelNo("setChannelNo");
+ request.setAppNo("setAppNo");
+ request.setSerialNo("setSerialNo");
+ request.setTradeNo("setTradeNo");
+ request.setModelNo("setModelNo");
+ request.setTradeType("setTradeType");
+ request.setAccountNo("setAccountNo");
+ request.setAmount("setAmount");
+ request.setCardNo("setCardNo");
+ request.setCardName("setCardName");
+ request.setIdNo("setIdNo");
+ request.setMobile("setMobile");
+ request.setTransDate("setTransDate");
+ request.setTransTradeTime("setTransTradeTime");
+
+ // 验证字段是否有变化
+ assertThatJson(Json.toJson(request)).isEqualTo("{\"channel_no\":\"setChannelNo\"," +
+ "\"app_no\":\"setAppNo\",\"serial_no\":\"setSerialNo\",\"trade_no\":\"setTradeNo\"," +
+ "\"model_no\":\"setModelNo\",\"trade_type\":\"setTradeType\",\"account_no\":\"setAccountNo\"," +
+ "\"amount\":\"setAmount\",\"card_no\":\"setCardNo\",\"card_name\":\"setCardName\"," +
+ "\"id_no\":\"setIdNo\",\"mobile\":\"setMobile\",\"trans_date\":\"setTransDate\"," +
+ "\"trans_tradetime\":\"setTransTradeTime\"}");
+
+ // 模拟结果
+ SendVerifySignResponse response = new SendVerifySignResponse();
+ response.setRecode("setRecode");
+ response.setRecodeInfo("setRecodeInfo");
+ response.setSysDate("setSysDate");
+ response.setSysTime("setSysTime");
+ response.setSmsNo("setSmsNo");
+
+ HttpResponse httpResponse = TestHttpResponse.create("/sms/v2/send-verify-code", response, SendVerifySignResponse.class);
+
+ // 打桩
+ Mockito.when(apiClient.post(
+ Mockito.eq("/sms/v2/send-verify-code"),
+ Mockito.any(HttpHeaders.class),
+ Mockito.any(RequestBody.class),
+ Mockito.eq(SendVerifySignResponse.class)))
+ .thenReturn(httpResponse);
+
+ SendVerifySignResponse result = service.send(request);
+
+ // 断言结果
+ assertThatJson(Json.toJson(result)).isEqualTo("{\"recode\":\"setRecode\",\"recode_info\":\"setRecodeInfo\"," +
+ "\"sys_date\":\"setSysDate\",\"sys_time\":\"setSysTime\",\"smsNo\":\"setSmsNo\"}");
+ }
+}
\ No newline at end of file