SpringBoot请求发送与信息响应匹配实现方法介绍

作者:执久呀 时间:2021-07-08 22:05:27 

发送虚拟请求访问controller

我们在test类中虚拟访问controller,就得发送虚拟请求。

先创建一个controller

package com.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/tests")
public class TestController {
   @GetMapping
   public String test(){
       System.out.println("test is running");
       return "test is success";
   }
}

在test中 ,这个是一个get请求,所以我们调用get,如果是put,则调用put即可

package com;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启虚拟MVC调用
@AutoConfigureMockMvc
public class WebTest {
   @Test
//    注入虚拟MVC调用对象
   public void test(@Autowired MockMvc mvc) throws Exception {
      //创建虚拟请求,当前访问/tests,MockMvcRequestBuilders是一个工具类
       MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/tests");
//执行请求
       mvc.perform(builder);
   }
}

访问需要用到的一个RequestBuilder,我们按ctrl+h显示出它的实现类

SpringBoot请求发送与信息响应匹配实现方法介绍

运行结果

SpringBoot请求发送与信息响应匹配实现方法介绍

打印出了结果,说明访问成功

匹配响应执行状态

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启虚拟MVC调用
@AutoConfigureMockMvc
public class WebTest {
   @Test
//    注入虚拟MVC调用对象
   public void test(@Autowired MockMvc mvc) throws Exception {
      //创建虚拟请求,当前访问/tests,MockMvcRequestBuilders是一个工具类
       MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/tests");
//        执行请求
       ResultActions action = mvc.perform(builder);
       //设置预期值与真实值进行比较,成功则测试通过,失败则测试不通过
       //定义本次调用的预期值
       StatusResultMatchers status= MockMvcResultMatchers.status();
       //预计本次调用成功的状态为200
       ResultMatcher ok=status.isOk();
       //添加预计值到本次调用过程中进行匹配
       action.andExpect(ok);
   }
}

运行成功不会有任何反应

SpringBoot请求发送与信息响应匹配实现方法介绍

当将get改为put制造一个错误,或修改不存在的路径等其他错误,则就会报出错误信息。

SpringBoot请求发送与信息响应匹配实现方法介绍

匹配响应体

虚拟请求体匹配

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启虚拟MVC调用
@AutoConfigureMockMvc
public class WebTest {
   @Test
//    注入虚拟MVC调用对象
   public void testBody(@Autowired MockMvc mvc) throws Exception {
       //创建虚拟请求,当前访问/tests,MockMvcRequestBuilders是一个工具类
       MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/tests");
//        执行请求
       ResultActions action = mvc.perform(builder);
       //设置预期值与真实值进行比较,成功则测试通过,失败则测试不通过
       //定义本次调用的预期值
       ContentResultMatchers content = MockMvcResultMatchers.content();
       //预计本次调用成功的状态为200
       ResultMatcher result= content.string("test is success1");
       //添加预计值到本次调用过程中进行匹配
       action.andExpect(result);
   }
}

如果一致则不会有任何错误信息出现, 若信息不一致,则会出现

SpringBoot请求发送与信息响应匹配实现方法介绍

匹配json格式响应体

先创建一个类pojo对象

package com.pojo;
import lombok.Data;
@Data
public class Person {
   private String  name;
   private String  age;
   private String  detail;
}

controller下

package com.controller;
import com.pojo.Person;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/tests")
public class TestController {
   @RequestMapping("/person")
   public Person testPerson(){
       Person person = new Person();
       person.setName("zhangsan");
       person.setAge("14");
       person.setDetail("xijie");
       return person;
   }
}

启动访问得到一组json数据

SpringBoot请求发送与信息响应匹配实现方法介绍

我们在测试类中修改一个,使他产生错误的信息

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启虚拟MVC调用
@AutoConfigureMockMvc
public class WebTest
   @Test
//    注入虚拟MVC调用对象
   public void testJson(@Autowired MockMvc mvc) throws Exception {
       //创建虚拟请求,当前访问/tests,MockMvcRequestBuilders是一个工具类
       MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/tests/person");
//        执行请求
       ResultActions action = mvc.perform(builder);
       ContentResultMatchers content = MockMvcResultMatchers.content();
       ResultMatcher result= content.json("{\"name\":\"zhangsan\",\"age\":\"14\",\"detail\":\"xijie1\"}");
       //添加预计值到本次调用过程中进行匹配
       action.andExpect(result);
   }
}

运行结果

SpringBoot请求发送与信息响应匹配实现方法介绍

匹配响应头

@Test
//    注入虚拟MVC调用对象
   public void testHeader(@Autowired MockMvc mvc) throws Exception {
       MockHttpServletRequestBuilder builder= MockMvcRequestBuilders.get("/tests");
       ResultActions action = mvc.perform(builder);
       HeaderResultMatchers header = MockMvcResultMatchers.header();
       ResultMatcher result = header.string("Content-Type", "application/json");
       //添加预计值到本次调用过程中进行匹配
      action.andExpect(result);
   }

匹配了一个/tests,返回字符串的方法。,就可以看出它的差别了

@RestController
@RequestMapping("/tests")
public class TestController {
   @GetMapping
   public String test(){
       System.out.println("test is running");
       return "test is success";
   }
}

SpringBoot请求发送与信息响应匹配实现方法介绍

一般的做法都是将这些写在同一方法。

来源:https://blog.csdn.net/weixin_60719453/article/details/127388893

标签:SpringBoot,发送请求,匹配,响应信息
0
投稿

猜你喜欢

  • springboot动态调整日志级别的操作大全

    2023-11-03 19:31:12
  • 浅谈抛出异常和捕获异常的一些区别

    2023-10-19 15:25:24
  • java使用Jsoup组件生成word文档

    2022-10-28 12:44:16
  • 详细聊聊SpringBoot中动态切换数据源的方法

    2023-11-24 04:07:49
  • java简单解析xls文件的方法示例【读取和写入】

    2022-04-15 19:30:43
  • GraphQL入门总体创建教程

    2022-10-16 12:29:09
  • Android之复选框对话框用法实例分析

    2023-10-03 05:07:03
  • 使用位运算实现网页中的过滤、筛选功能实例

    2023-06-04 10:00:31
  • Android Flutter实现仿闲鱼动画效果

    2023-07-15 15:32:47
  • C#Button窗体常用属性及事件详解

    2021-08-29 03:43:28
  • C++实现简单酒店管理系统

    2021-07-31 13:52:40
  • C#实现根据图片的链接地址获取图片的后缀名

    2022-08-04 04:30:58
  • Spring超详细讲解创建BeanDefinition流程

    2023-11-25 08:37:55
  • Android仿微信语音对讲录音功能

    2021-10-12 22:13:36
  • Java swing仿酷狗音乐播放器

    2023-10-24 03:04:34
  • java简易小游戏制作代码

    2023-11-23 19:49:38
  • 举例解析Java的设计模式编程中里氏替换原则的意义

    2021-06-30 18:37:17
  • 浅谈SpringMVC HandlerInterceptor诡异问题排查

    2023-07-24 05:34:06
  • JAVA IDEA 打开assert 设置方式

    2022-08-19 13:48:49
  • Java BigDecimal中divide方法案例详解

    2021-12-31 07:00:29
  • asp之家 软件编程 m.aspxhome.com