单元测试中模拟HttpServletRequest数据传输和HttpServletResponse数据接收打印
import static org.mockito.Mockito.*;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.junit.Test;
public class MyControllerTest {
@Test
public void testHandleRequest() throws IOException {
// 创建 HttpServletRequest 和 HttpServletResponse 的模拟对象
HttpServletRequest request = mock(HttpServletRequest.class);
// 设置模拟 HttpServletRequest 的行为,可以设置参数值等
when(request.getParameter("param1")).thenReturn("value1");
// 创建 HttpServletResponse 的模拟对象
HttpServletResponse response = mock(HttpServletResponse.class);
// 创建一个StringWriter来捕获PrintWriter写入的内容
StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter);
// 模拟当向PrintWriter写入内容时,将内容写入到StringWriter中
when(response.getWriter()).thenReturn(writer);
// 创建控制器对象
MyController controller = new MyController();
// 调用控制器方法,并传入模拟的 HttpServletResponse 对象
controller.handleRequest(request, response);
// 获取并打印响应内容
String responseBody = stringWriter.toString();
System.out.println("Response Body: " + responseBody);
// 关闭StringWriter
writer.close();
}
}