Copilot commented on code in PR #6095:
URL: https://github.com/apache/shenyu/pull/6095#discussion_r2266284460


##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/test/java/org/apache/shenyu/plugin/ai/transformer/response/template/AiResponseTransformerTemplateTest.java:
##########
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.transformer.response.template;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.lenient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.http.server.reactive.MockServerHttpResponse;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test for AiResponseTransformerTemplate.
+ */
+@ExtendWith(MockitoExtension.class)
+class AiResponseTransformerTemplateTest {
+
+    private AiResponseTransformerTemplate template;
+
+    private ServerWebExchange exchange;
+
+    private MockServerHttpRequest request;
+
+    private MockServerHttpResponse response;
+
+    @BeforeEach
+    void setUp() {
+        // 创建测试用的请求
+        request = MockServerHttpRequest
+                .method(HttpMethod.POST, "/test")
+                .header("Content-Type", "application/json")
+                .header("Authorization", "Bearer test-token")
+                .body("{\"test\":\"data\"}");
+
+        // 创建测试用的响应

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Create test response
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/test/java/org/apache/shenyu/plugin/ai/transformer/response/template/AiResponseTransformerTemplateTest.java:
##########
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.transformer.response.template;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.lenient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.http.server.reactive.MockServerHttpResponse;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test for AiResponseTransformerTemplate.
+ */
+@ExtendWith(MockitoExtension.class)
+class AiResponseTransformerTemplateTest {
+
+    private AiResponseTransformerTemplate template;
+
+    private ServerWebExchange exchange;
+
+    private MockServerHttpRequest request;
+
+    private MockServerHttpResponse response;
+
+    @BeforeEach
+    void setUp() {
+        // 创建测试用的请求
+        request = MockServerHttpRequest
+                .method(HttpMethod.POST, "/test")
+                .header("Content-Type", "application/json")
+                .header("Authorization", "Bearer test-token")
+                .body("{\"test\":\"data\"}");
+
+        // 创建测试用的响应

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Create a test request
           request = MockServerHttpRequest
                   .method(HttpMethod.POST, "/test")
                   .header("Content-Type", "application/json")
                   .header("Authorization", "Bearer test-token")
                   .body("{\"test\":\"data\"}");
   
           // Create a test response
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/test/java/org/apache/shenyu/plugin/ai/transformer/response/template/AiResponseTransformerTemplateTest.java:
##########
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.transformer.response.template;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.lenient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.http.server.reactive.MockServerHttpResponse;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test for AiResponseTransformerTemplate.
+ */
+@ExtendWith(MockitoExtension.class)
+class AiResponseTransformerTemplateTest {
+
+    private AiResponseTransformerTemplate template;
+
+    private ServerWebExchange exchange;
+
+    private MockServerHttpRequest request;
+
+    private MockServerHttpResponse response;
+
+    @BeforeEach
+    void setUp() {
+        // 创建测试用的请求
+        request = MockServerHttpRequest
+                .method(HttpMethod.POST, "/test")
+                .header("Content-Type", "application/json")
+                .header("Authorization", "Bearer test-token")
+                .body("{\"test\":\"data\"}");
+
+        // 创建测试用的响应
+        response = new MockServerHttpResponse();
+        response.setStatusCode(HttpStatus.OK);
+        response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+        response.getHeaders().set("X-Custom-Header", "custom-value");
+
+        exchange = mock(ServerWebExchange.class);
+        lenient().when(exchange.getRequest()).thenReturn(request);
+        lenient().when(exchange.getResponse()).thenReturn(response);
+
+        template = new AiResponseTransformerTemplate("Transform this 
response", request);
+    }
+
+    @Test
+    void testAssembleMessage() {
+        // 执行测试
+        Mono<String> result = template.assembleMessage(exchange);
+
+        // 验证结果
+        StepVerifier.create(result)
+                .assertNext(message -> {
+                    assertNotNull(message);
+                    // 验证消息包含必要的字段
+                    assertTrue(message.contains("system_prompt"));
+                    assertTrue(message.contains("user_prompt"));
+                    assertTrue(message.contains("request"));
+                    assertTrue(message.contains("response"));
+                    assertTrue(message.contains("headers"));
+                    assertTrue(message.contains("body"));
+                    assertTrue(message.contains("status"));
+                })
+                .verifyComplete();
+    }
+
+    @Test
+    void testAssembleMessageWithJsonRequest() {
+        // 创建JSON请求

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Create JSON request
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/src/main/java/org/apache/shenyu/plugin/ai/common/utils/ResponseBodyCaptureUtils.java:
##########
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.common.utils;
+
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+/**
+ * Response body capture utils.
+ */
+public class ResponseBodyCaptureUtils {
+
+    /**
+     * Capture response body from exchange.
+     * Note: This method returns an empty string because the response body
+     * is not available at the time of template assembly.
+     * The actual response body will be captured in the response decorator.
+     *
+     * @param exchange the exchange
+     * @return the captured response body (empty string)
+     */
+    public static Mono<String> captureResponseBody(final ServerWebExchange 
exchange) {
+        // 在响应转换的场景中,响应体还没有被写入,所以返回空字符串
+        // 实际的响应体将在 AiResponseTransformerDecorator 中被捕获和处理

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // In the response transformation scenario, the response body has 
not been written yet, so an empty string is returned.
           // The actual response body will be captured and processed in 
AiResponseTransformerDecorator.
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/src/test/java/org/apache/shenyu/plugin/ai/common/utils/ResponseBodyCaptureUtilsTest.java:
##########
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.common.utils;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test for ResponseBodyCaptureUtils.
+ */
+@ExtendWith(MockitoExtension.class)
+class ResponseBodyCaptureUtilsTest {
+
+    @Test
+    void testCaptureResponseBodyWithNullExchange() {
+        // 测试空exchange的情况
+        Mono<String> result = 
ResponseBodyCaptureUtils.captureResponseBody(null);
+
+        // 验证结果

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Verify the result
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/test/java/org/apache/shenyu/plugin/ai/transformer/response/template/AiResponseTransformerTemplateTest.java:
##########
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.transformer.response.template;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.lenient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.http.server.reactive.MockServerHttpResponse;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test for AiResponseTransformerTemplate.
+ */
+@ExtendWith(MockitoExtension.class)
+class AiResponseTransformerTemplateTest {
+
+    private AiResponseTransformerTemplate template;
+
+    private ServerWebExchange exchange;
+
+    private MockServerHttpRequest request;
+
+    private MockServerHttpResponse response;
+
+    @BeforeEach
+    void setUp() {
+        // 创建测试用的请求
+        request = MockServerHttpRequest
+                .method(HttpMethod.POST, "/test")
+                .header("Content-Type", "application/json")
+                .header("Authorization", "Bearer test-token")
+                .body("{\"test\":\"data\"}");
+
+        // 创建测试用的响应
+        response = new MockServerHttpResponse();
+        response.setStatusCode(HttpStatus.OK);
+        response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+        response.getHeaders().set("X-Custom-Header", "custom-value");
+
+        exchange = mock(ServerWebExchange.class);
+        lenient().when(exchange.getRequest()).thenReturn(request);
+        lenient().when(exchange.getResponse()).thenReturn(response);
+
+        template = new AiResponseTransformerTemplate("Transform this 
response", request);
+    }
+
+    @Test
+    void testAssembleMessage() {
+        // 执行测试
+        Mono<String> result = template.assembleMessage(exchange);
+
+        // 验证结果

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Verify the result
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-response-transformer/src/test/java/org/apache/shenyu/plugin/ai/transformer/response/template/AiResponseTransformerTemplateTest.java:
##########
@@ -0,0 +1,384 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.transformer.response.template;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.lenient;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
+import org.springframework.mock.http.server.reactive.MockServerHttpResponse;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Test for AiResponseTransformerTemplate.
+ */
+@ExtendWith(MockitoExtension.class)
+class AiResponseTransformerTemplateTest {
+
+    private AiResponseTransformerTemplate template;
+
+    private ServerWebExchange exchange;
+
+    private MockServerHttpRequest request;
+
+    private MockServerHttpResponse response;
+
+    @BeforeEach
+    void setUp() {
+        // 创建测试用的请求
+        request = MockServerHttpRequest
+                .method(HttpMethod.POST, "/test")
+                .header("Content-Type", "application/json")
+                .header("Authorization", "Bearer test-token")
+                .body("{\"test\":\"data\"}");
+
+        // 创建测试用的响应
+        response = new MockServerHttpResponse();
+        response.setStatusCode(HttpStatus.OK);
+        response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+        response.getHeaders().set("X-Custom-Header", "custom-value");
+
+        exchange = mock(ServerWebExchange.class);
+        lenient().when(exchange.getRequest()).thenReturn(request);
+        lenient().when(exchange.getResponse()).thenReturn(response);
+
+        template = new AiResponseTransformerTemplate("Transform this 
response", request);
+    }
+
+    @Test
+    void testAssembleMessage() {
+        // 执行测试

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Execute test
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/src/main/java/org/apache/shenyu/plugin/ai/common/utils/ResponseBodyCaptureUtils.java:
##########
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.common.utils;
+
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+/**
+ * Response body capture utils.
+ */
+public class ResponseBodyCaptureUtils {
+
+    /**
+     * Capture response body from exchange.
+     * Note: This method returns an empty string because the response body
+     * is not available at the time of template assembly.
+     * The actual response body will be captured in the response decorator.
+     *
+     * @param exchange the exchange
+     * @return the captured response body (empty string)
+     */
+    public static Mono<String> captureResponseBody(final ServerWebExchange 
exchange) {
+        // 在响应转换的场景中,响应体还没有被写入,所以返回空字符串
+        // 实际的响应体将在 AiResponseTransformerDecorator 中被捕获和处理

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // In the response transformation scenario, the response body has 
not been written yet, so an empty string is returned.
           // The actual response body will be captured and processed in 
AiResponseTransformerDecorator.
   ```



##########
shenyu-plugin/shenyu-plugin-ai/shenyu-plugin-ai-common/src/test/java/org/apache/shenyu/plugin/ai/common/utils/ResponseBodyCaptureUtilsTest.java:
##########
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.plugin.ai.common.utils;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test for ResponseBodyCaptureUtils.
+ */
+@ExtendWith(MockitoExtension.class)
+class ResponseBodyCaptureUtilsTest {
+
+    @Test
+    void testCaptureResponseBodyWithNullExchange() {
+        // 测试空exchange的情况

Review Comment:
   The comment is in Chinese. Consider using English for consistency with the 
codebase.
   ```suggestion
           // Test the case of a null exchange
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to