springboot虚拟请求——测试

springboot虚拟请求

表现层测试

web环境模拟测试

在这里插入图片描述
在这里插入图片描述

虚拟请求状态匹配——执行状态的匹配

    @Test
    void testStatus(@Autowired MockMvc mvc) throws Exception {
//       //http://localhost:8080/books
        // 创建一个虚拟请求,当前访问的是books
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books1");
        ResultActions actions = mvc.perform(builder);

        //设定预期值,与真实值进行比较,成功测试通过,失败测试失败
        // 定义本次调用的预期值
        StatusResultMatchers status = MockMvcResultMatchers.status();
        // 预计本次调用时成功的状态200
        ResultMatcher ok = status.isOk();

        // 添加与机制到本次调用过程中进行匹配
        actions.andExpect(ok);
    }

虚拟请求状态匹配——执行内容的匹配

   @Test
    void testBody(@Autowired MockMvc mvc) throws Exception {
//       //http://localhost:8080/books
        // 创建一个虚拟请求,当前访问的是books
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
        ResultActions actions = mvc.perform(builder);

        //设定预期值,与真实值进行比较,成功测试通过,失败测试失败
        // 定义本次调用的预期值
        ContentResultMatchers content = MockMvcResultMatchers.content();
        ResultMatcher result = content.string("springboot");

        // 添加与机制到本次调用过程中进行匹配
        actions.andExpect(result);
    }

虚拟请求状态匹配——执行内容的匹配(json)

 @Test
    void testJson(@Autowired MockMvc mvc) throws Exception {
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
        ResultActions actions = mvc.perform(builder);

        //设定预期值,与真实值进行比较,成功测试通过,失败测试失败
        // 定义本次调用的预期值
        ContentResultMatchers content = MockMvcResultMatchers.content();
        ResultMatcher result = content.json("{\n" +
                "    \"id\": 1,\n" +
                "    \"name\": \"springBoot\",\n" +
                "    \"type\": \"springBoot\",\n" +
                "    \"description\": \"springBoot\"\n" +
                "}");

        // 添加与机制到本次调用过程中进行匹配
        actions.andExpect(result);
    }

在这里插入图片描述

这里面的东西都可以匹配

虚拟请求状态匹配——匹配响应头

@Test
    void testContentType(@Autowired MockMvc mvc) throws Exception {
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
        ResultActions actions = mvc.perform(builder);

        //设定预期值,与真实值进行比较,成功测试通过,失败测试失败
        // 定义本次调用的预期值
        HeaderResultMatchers header = MockMvcResultMatchers.header();

        ResultMatcher contentType = header.string("Content-Type","application/json");
        // 添加与机制到本次调用过程中进行匹配
        actions.andExpect(contentType);
    }

实际应用的时候,可以把这些都放在一起
例如,把这些组合一下:

@Test
    void testGetById(@Autowired MockMvc mvc) throws Exception {
        MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/books");
        ResultActions actions = mvc.perform(builder);

        StatusResultMatchers status = MockMvcResultMatchers.status();
        ResultMatcher ok = status.isOk();
        actions.andExpect(ok);


        HeaderResultMatchers header = MockMvcResultMatchers.header();
        ResultMatcher contentType = header.string("Content-Type","application/json");
        actions.andExpect(contentType);


        ContentResultMatchers content = MockMvcResultMatchers.content();
        ResultMatcher result = content.json("{\n" +
                "    \"id\": 1,\n" +
                "    \"name\": \"springBoot\",\n" +
                "    \"type\": \"springBoot2\",\n" +
                "    \"description\": \"springBoot\"\n" +
                "}");
        actions.andExpect(result);
    }

数据层测试事务回滚

在这里插入图片描述

测试用例数据设定

在这里插入图片描述
配置一个对象来使用,比如:

package com.itheima.testcase.domain;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "testcase.book")
public class BookCase {
    private int id;
    private int id2;
    private int type;
    private String name;
    private  String uuid;
    private long publishTime;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/210545.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SparkSQL】SparkSQL的运行流程 Spark On Hive 分布式SQL执行引擎

【大家好,我是爱干饭的猿,本文重点介绍、SparkSQL的运行流程、 SparkSQL的自动优化、Catalyst优化器、SparkSQL的执行流程、Spark On Hive原理配置、分布式SQL执行引擎概念、代码JDBC连接。 后续会继续分享其他重要知识点总结,如果喜欢这篇文…

大气多功能工作室个人引导页源码

源码简介 大气多功能工作室个人引导页源码,支持三端自适应,带赞助功能,采用设计配色网站点赞量最高的一个配色方案,一个二次元风格的引导页就此诞生,经过长传美国服务器测试,结果也是很理想,测速…

《堆》的模拟实现

目录 前言: 模拟实现《堆》: 1.自定义数据类型 2.初始化“堆” 3.销毁“堆” 4.进“堆” 关于AdjustUp() 5.删除堆顶元素 关于AdjustDown() 6.判断“堆”是否为空 7.求“堆”中的数据个数 8.求“堆”顶元素 总结: 前言&#xf…

中国人工智能

随着科技的飞速发展,人工智能(AI)作为一项前沿技术在各个领域展现出了强大的潜力。本文将探讨中国人工智能的历史、现状,并展望其未来发展。 人工智能的起源与历史 人工智能的概念最早诞生于1956年的美国达特茅斯学院的夏季研讨会…

2022年4月12日 Go生态洞察:何时使用泛型 ️

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

目标检测——Fast R-CNN算法解读

论文:Fast R-CNN 作者:Ross Girshick 链接:https://arxiv.org/abs/1504.08083 代码:https://github.com/rbgirshick/fast-rcnn 目录 1、算法概述2、Fast R-CNN细节2.1The RoI pooling layer2.2 Fine-tuning for detection2.3 Fast…

火星探索:技术挑战与前沿进展

火星探索:技术挑战与前沿进展 一、引言 火星,这颗红色的星球,长久以来一直吸引着人类的目光。随着科技的飞速发展,火星探索已经从纯粹的科幻梦想逐渐转变为现实的研究课题。然而,火星探索仍然面临着诸多技术挑战。本文将深入探讨火星探索的关键技术、现有技术瓶颈以及前沿…

【FPGA图像处理实战】- 图像基础知识

视频图像处理是FPGA主要应用方向之一,很多FPGA从事或准备进入这一领域,我们现在开始发布新的FPGA实战专栏——FPGA图像处理。 FPGA处理视频图像处理的主要优势是流水线和并行处理运算,特别是现在视频分辨率越来越大,从720p到1080…

文字、图片免费生成视频和专属数字人,你不来试试吗?

查看生成的效果:AI产生的视频(关注公众号,获取精彩内容) 您是否想要制作一些令人惊叹的视频,但又没有视频编辑的技能或经验?您是否想要利用人工智能的力量,让您的图片和声音变成动态的视频&…

二叉树链式结构的实现——C语言

目录 一、提前说明 二、二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3后序遍历 2.4代码 三、二叉树结点个数 3.1整体思路 3.2代码 四、二叉树叶子结点个数 4.1整体思路 4.2代码 五、二叉树的高度(深度) 5.1整体思路 5.2代码 六、二叉树第k层节点个数 6.1整体…

selenium三猛士

selenium包括三个项目,分别是:Selenium WebDriver,Selenium IDE,Selenium Grid。 Selenium WebDriver Selenium WebDriver是客户端API接口,测试人员通过调用这些接口,来访问浏览器驱动,浏览器再访问浏览器…

数学建模 | MATLAB数据建模方法--机器学习方法

近年来,全国赛的题目中,多多少少都有些数据,而且数据量总体来说呈不断增加的趋势, 这是由于在科研界和工业界已积累了比较丰富的数据,伴随大数据概念的兴起及机器学习技术的发展, 这些数据需要转化成更有意…

Linux的基本指令(4)

目录 20.tar指令(重要):打包/解包,不打开它,直接看内容 21.bc指令 22.uname –r指令: 23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 20.tar指令(重要):打包/解包&#…

Kubernetes(K8s)Pod控制器详解-06

Pod控制器详解 Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建 控制器创建…

分享85个节日PPT,总有一款适合您

分享85个节日PPT,总有一款适合您 85个节日PPT下载链接:https://pan.baidu.com/s/1FTbSj2Baix-Cj6n42Cz26g?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。…

语义分割 U-net网络学习笔记 (附代码)

论文地址:https://link.springer.com/chapter/10.1007/978-3-319-24574-4_28 代码地址:https://b23.tv/PCJJmqN 1.是什么? Unet是一种用于图像分割的深度学习网络模型,其结构由编码器和解码器组成,可以对图像进行像素…

深度学习 -- 神经网络

1、神经网络的历史 2、 M-P模型 M-P模型是首个通过模仿神经元而形成的模型。在M-P模型中,多个输入节点对应一个输出节点y。每个输入x,乘以相应的连接权重w,然后相加得到输出y。结果之和如果大于阈值h,则输出1,否则输出0。输入和输出均是0或1。 公式2.1: …

【代码】多种调度模式下的光储电站经济性最优 储能容量配置分析matlab/yalmip

程序名称:多种调度模式下的光储电站经济性最优储能容量配置分析 实现平台:matlab-yalmip-cplex/gurobi 代码简介:代码主要做的是一个光储电站经济最优储能容量配置的问题,对光储电站中储能的容量进行优化,以实现经济…

08-中介者模式-C语言实现

中介者模式: Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.(用一个中介对…

2243:Knight Moves

文章目录 题目描述思路1. DFS2. BFS3. 动态规划 解题方法1. DFS2. BFS3. 动态规划 题目描述 题目链接 翻译如下: 注:骑士移动是和象棋里的马一样走的是日字型 你的一个朋友正在研究旅行骑士问题 (TKP),你要找到最短的…