SpringBoot内部模拟http请求到Controller(不通过本机网络)

使用场景:

1. 想实现自定义协议请求数据,但是还有拥有spring的 controller方便的业务处理流程和注解。

2. 想要调用对应的 controller 却不想处理自定义的 mapping。

 

一、首先是通过参考 spring-test 中的模拟实现的HttpServlet

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>

 二、参考已经实现的模拟javax.servlet.http.HttpServletRequest 和 javax.servlet.http.HttpServletResponse

在 spring-test 依赖中已经对以上两个接口实现分别是

org.springframework.mock.web.MockHttpServletRequest

org.springframework.mock.web.MockHttpServletResponse

还会依赖到 org.springframework.mock.web.HeaderValueHolder 封装的请求头

可以把这三个类复制出来进行自定义改造

三、调用Spring的HTTP请求处理程序类 org.springframework.web.servlet.DispatcherServlet

通过此类中的 protected void service(HttpServletRequest request, HttpServletResponse response) 方法。 service

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot中,您可以使用MockMvc来模拟第三方接口的返回JSON。MockMvc提供了一种简单的方式来测试控制器的行为和输出结果。下面是一个示例代码,演示如何使用MockMvc来模拟第三方接口返回JSON: ```java @RunWith(SpringRunner.class) @WebMvcTest(YourController.class) // 指定要测试的控制器类 public class YourControllerTest { @Autowired private MockMvc mockMvc; @Test public void testYourMethod() throws Exception { // 设置预期的请求路径和HTTP方法,并设置期望的返回JSON mockMvc.perform(MockMvcRequestBuilders.get("/your-endpoint") .accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.content().json("{\"name\":\"John\",\"age\":30}")); } } ``` 在上面的示例中,我们使用@RunWith注解指定运行测试的JUnit测试运行器为SpringRunner,然后使用@WebMvcTest注解指定要测试的控制器类。通过@Autowired注入MockMvc对象。 接下来,在测试方法中,我们使用mockMvc.perform方法来模拟发送请求,并使用MockMvcRequestBuilders.get方法设置请求路径和HTTP方法为GET。然后,通过.andExpect方法来设置期望的响应状态码为200,并使用andExpect(MockMvcResultMatchers.content().json方法来设置期望的返回JSON。 这样,当您运行测试方法时,MockMvc会模拟发送请求,并断言返回的JSON与预期的JSON相匹配。 请注意,您需要根据您的实际情况修改示例中的"/your-endpoint"为要测试的接口路径,并修改期望的返回JSON以适应您的测试场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚哒老虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值