SpringBoot测试类启动web环境-下篇

一、响应状态

1.MockMvcResultMatchers

说明:模拟结果匹配。

java 复制代码
package com.forever;

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.ResultActions;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.result.StatusResultMatchers;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//开启虚拟mvc调用
@AutoConfigureMockMvc
public class WebTest {

    @Test
        //形参写入或者上方写@Autowired;为方法注入资源。
    void testWeb(@Autowired MockMvc mockMvc) throws Exception {
        //发请求http://....../users;下面就是模拟的一个http请求,访问的是users
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/users1");
        //执行对应的请求。
      ResultActions action= mockMvc.perform(builder);
        //设定预期的值进行比较,成功测试通过,失败测试失败。
        //定义本次调用的预期值
        StatusResultMatchers status = MockMvcResultMatchers.status();
        //预计本次调用时成功的:状态200
        ResultMatcher ok = status.isOk();
        //添加预期值到本次调用中进行匹配
        action.andExpect(ok);

    }


}

2.匹配失败

二、响应体

1.content方法

java 复制代码
 @Test
        //形参写入或者上方写@Autowired;为方法注入资源。
    void testBody(@Autowired MockMvc mockMvc) throws Exception {
        //发请求http://....../users;下面就是模拟的一个http请求,访问的是users
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/users");
        //执行对应的请求。
        ResultActions action = mockMvc.perform(builder);
        //设定预期的值进行比较,成功测试通过,失败测试失败。
        //定义本次调用的预期值
        ContentResultMatchers content = MockMvcResultMatchers.content();

        ResultMatcher resBody = content.string("springboot-good");
        //添加预期值到本次调用中进行匹配
        action.andExpect(resBody);

    }

2.匹配失败

三、json格式

1.实体类

java 复制代码
package com.forever.domain;

import lombok.Data;

@Data
public class User {
    private  int id;
    private  String name;
    private  int age;
}

2.控制层

java 复制代码
package com.forever;

import com.forever.domain.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class UserController {
    @GetMapping
    public User getUser() {
        System.out.println("getById is running ....");
        User user = new User();
        user.setName("李四");
        user.setAge(18);
        user.setId(1);
        return user;
    }
}

3. 测试方法

说明:content.json()里面放的是json对象。

java 复制代码
    @Test
        //形参写入或者上方写@Autowired;为方法注入资源。
    void testJson(@Autowired MockMvc mockMvc) throws Exception {
        //发请求http://....../users;下面就是模拟的一个http请求,访问的是users
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/users");
        //执行对应的请求。
        ResultActions action = mockMvc.perform(builder);
        //设定预期的值进行比较,成功测试通过,失败测试失败。
        //定义本次调用的预期值
        ContentResultMatchers content = MockMvcResultMatchers.content();

        ResultMatcher resBody = content.json("");
        //添加预期值到本次调用中进行匹配
        action.andExpect(resBody);

    }

四、content-type

1.测试方法

java 复制代码
    @Test
        //形参写入或者上方写@Autowired;为方法注入资源。
    void testContentType(@Autowired MockMvc mockMvc) throws Exception {
        //发请求http://....../users;下面就是模拟的一个http请求,访问的是users
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/users");
        //执行对应的请求。
        ResultActions action = mockMvc.perform(builder);
        //设定预期的值进行比较,成功测试通过,失败测试失败。
        //定义本次调用的预期值
        HeaderResultMatchers header  = MockMvcResultMatchers.header();

      ResultMatcher contentType=header.string("Content-good","application/json");
        //添加预期值到本次调用中进行匹配
        action.andExpect(contentType);

    }

}

2.匹配错误

相关推荐
小二·5 小时前
Python Web 开发进阶实战 :AI 原生数字孪生 —— 在 Flask + Three.js 中构建物理世界实时仿真与优化平台
前端·人工智能·python
Bony-6 小时前
Go语言垃圾回收机制详解与图解
开发语言·后端·golang
Amumu121386 小时前
Vue组件化编程
前端·javascript·vue.js
We་ct6 小时前
LeetCode 6. Z 字形变换:两种解法深度解析与优化
前端·算法·leetcode·typescript
小二·7 小时前
Python Web 开发进阶实战(终章):从单体应用到 AI 原生生态 —— 45 篇技术演进全景与未来开发者生存指南
前端·人工智能·python
m0_637256588 小时前
vue-baidu-map添加了类型组件导致非常卡顿的问题
前端·javascript·vue.js
挂机且五杀8 小时前
为什么在React地图组件里,memo 不是优化,而是生存?
前端·react.js·前端框架
RFCEO8 小时前
HTML编程 课程七、:HTML5 新增表单标签与属性
前端·html·html5·搜索框·手机号·邮箱验证·日期选择
刘一说8 小时前
Vue开发中的“v-model陷阱”:为什么它不能用于非表单元素?
前端·javascript·vue.js
好好研究8 小时前
SpringBoot - yml配置文件
java·spring boot·spring