SpringBoot请求发送与信息响应匹配实现方法介绍
作者:执久呀 发布时间:2021-07-08 22:05:27
标签: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";
}
}
一般的做法都是将这些写在同一方法。
来源:https://blog.csdn.net/weixin_60719453/article/details/127388893
0
投稿
猜你喜欢
- 要求: * 判断用户输入的年份是平年还是闰年实现代码:import java.util.Scanner;/** * 要
- 一、数据输出SpringMVC将数据携带给页面的储存工具,有三种,map,ModelMap,model,它们在底层实质还是使用到了Bindi
- Spring注入方式可以分为三类,xml注入、注解注入、BeanDefinition注入;用法上可以分为三种,但是底层实现代码都是统一Bea
- 一、什么是 websocket 接口使用 websocket 建立长连接,服务端和客户端可以互相通信,服务端只要有数据更新,就可以主动推给客
- 定义在一幅无向图G=(V,E) 中,(u,v) 为连接顶点u和顶点v的边,w(u,v)为边的权重,若存在边的子集T&am
- 开发过程中,如果使用mybatis做为ORM框架,经常需要打印出完整的sql语句以及执行的结果做为参考。虽然mybatis结合日志框架可以做
- 前言众所周知Spring Boot是非常高效的开发框架,lombok是一套代码模板解决方案,将极大提升开发的效率,这里介绍给大家使用。文中详
- 1. 绪论当我们编写了自己的C#程序,有程序自定义的文件类型时,通常希望它满足以下需求:双击自定义文件打开自定义程序 自定义文件有着自己的图
- 实现功能:模拟简单登录功能,登录成功跳转新页面,登录失败在原登录界面提示登录失败信息开发环境:eclipseTomcat-8.0预备知识:H
- 一、代码实现创建窗口首先创建一个游戏窗体类GameFrame,继承至JFrame,用来显示在屏幕上(window的对象),每个游戏都有一个窗
- 昨天有个粉丝加了我,问我如何实现类似shiro的资源权限表达式的访问控制。我以前有一个小框架用的就是shiro,权限控制就用了资源权限表达式
- 本文实例为大家分享了Java实现简单GUI登录和注册界面的具体代码,供大家参考,具体内容如下先看效果图:登陆界面:注册界面:实现代码如下:一
- 方法有4种:使用 String 类的 valueOf() 方法使用字符串连接使用 Character 类的 toString() 方法使用字
- java Mybatis存进时间戳封装了一个实体类,里面有个字段 Integer createTime。要利用这个实体类将一个时间戳存进数据
- 在java 编程中,我们常常有这样的需求:需要将一段字符串内的特定字符串,按照一定规则查找出来或替换,比如匹配文本开头规则和结束规则。以下就
- 使用httpclient检测url状态及链接是否能打开有时候我们需要检测某个url返回的状态码是不是200或者页面能不能正常打开响应可使用如
- C#事件实例详解C#和JAVA有许多相似的地方,设计思想差不多,语法及其相像,均传承自面向对象设计思想,灵感来自C++并取其精华去其“糟粕(
- 具体代码如下所示:***web.xml***<?xml version="1.0" encoding="
- 以下代码为一个工具类package com.imooc.reflect;import java.lang.reflect.Method;pu
- 从何说起前些天和朋友讨论一个问题,他们的应用有几十万会员然后对应有积分,现在想做积分排名的需求,问有没有什么好方案。这个问题也算常见,很多地