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

 更新时间:2022年10月21日 17:06:32   作者:执久呀  
这篇文章主要介绍了SpringBoot请求发送与信息响应匹配实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

发送虚拟请求访问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显示出它的实现类

运行结果

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

匹配响应执行状态

@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);
    }
}

运行成功不会有任何反应

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

匹配响应体

虚拟请求体匹配

@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);
    }
}

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

匹配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数据

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

@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);
    }
}

运行结果

匹配响应头

   @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请求发送与信息响应匹配实现方法介绍的文章就介绍到这了,更多相关SpringBoot请求发送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现的进制转换工具类完整示例

    Java实现的进制转换工具类完整示例

    这篇文章主要介绍了Java实现的进制转换工具类,结合完整实例形式分析了Java实现二进制、十六进制、字符串、数组等相关转换操作技巧,需要的朋友可以参考下
    2018-07-07
  • Java并发编程之阻塞队列详解

    Java并发编程之阻塞队列详解

    这篇文章主要为大家详细介绍了Java并发编程之阻塞队列,什么是阻塞队列?主要的阻塞队列及其方法介绍,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Java基础之Comparable与Comparator概述

    Java基础之Comparable与Comparator概述

    这篇文章主要介绍了Java基础之Comparable与Comparator详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • SpringBoot测试junit遇到的坑及解决

    SpringBoot测试junit遇到的坑及解决

    这篇文章主要介绍了SpringBoot测试junit遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • hadoop 单机安装配置教程

    hadoop 单机安装配置教程

    单机安装主要用于程序逻辑调试。安装步骤基本通分布式安装,包括环境变量,主要Hadoop配置文件,SSH配置等,需要的朋友可以参考下
    2012-11-11
  • Spring Boot连接超时导致502错误的实战案例

    Spring Boot连接超时导致502错误的实战案例

    这篇文章主要给大家介绍了关于Spring Boot连接超时导致502错误的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java中的Semaphore信号量使用解析

    Java中的Semaphore信号量使用解析

    这篇文章主要介绍了Java中的Semaphore信号量使用解析,Semaphore 通常我们叫它信号量,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源,需要的朋友可以参考下
    2023-11-11
  • idea2020.1设置多个spring boot的service启动的实现

    idea2020.1设置多个spring boot的service启动的实现

    这篇文章主要介绍了idea2020.1设置多个spring boot的service启动,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java 实战项目之诚途旅游系统的实现流程

    Java 实战项目之诚途旅游系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SpringBoot+Vue+maven+Mysql实现一个精美的物流管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java抽奖算法第二例

    Java抽奖算法第二例

    这篇文章主要为大家详细介绍了Java抽奖算法,根据概率将奖品划分区间,每个区间代表一个奖品,然后抽取随机数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论