IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 单元测试之MockBean -> 正文阅读

[开发测试]单元测试之MockBean

上次介绍了如何调用本地接口的MockMvc,这次分享的是如何使用MockBean模拟第三方接口的返回值。使用的技术为Mockito。

项目中需要添加依赖:

testImplementation 'org.springframework.boot:spring-boot-starter-test'

1、创建被测试的SparkService

package com.spark.mock.service;

import org.springframework.stereotype.Service;

@Service
public class SparkService {

    /**
     * 一个参数
     * @param pattern
     * @return
     */
    public String getName(String pattern){
        // 此处可以写调用没有网络权限,或者第三方没有开发完成的接口
        return "测试成功";
    }

    /**
     * 多个参数
     * @param pattern1
     * @param pattern2
     * @return
     */
    public String getName(String pattern1,String pattern2){
        // 此处可以写调用没有网络权限,或者第三方没有开发完成的接口
        return "测试成功";
    }
}

2、创建Controller

	@PostMapping("/api/mockBean")
    public String getMock(){
        return sparkService.getName("wsl");
    }

    @PostMapping("/api/getMockMulParamters")
    public String getMockMulParamters(){
        return sparkService.getName("Spark","24");
    }

3、写单元测试类

在单元测试类中引入需要被模拟的接口SparkService,并在上面添加注解

@MockBean
private SparkService sparkService;

创建测试方法分别模拟一个参数、多个参数、抛出异常三种情况。主要使用的依赖以及实现方式

import org.springframework.boot.test.mock.mockito.MockBean
import static org.mockito.ArgumentMatchers.eq
import static org.mockito.Mockito.when
when(sparkService.getName(eq("wsl"))).thenReturn("此处为模拟单个接口参数的返回结果");

测试方法

@MockBean
private SparkService sparkService;


创建测试方法分别模拟一个参数、多个参数、抛出异常三种情况。主要使用的依赖以及实现方式

import org.springframework.boot.test.mock.mockito.MockBean
import static org.mockito.ArgumentMatchers.eq
import static org.mockito.Mockito.when
when(sparkService.getName(eq("wsl"))).thenReturn("此处为模拟单个接口参数的返回结果");
    /**
     * 模拟第三方接口的返回值
     * @throws Exception
     */
    @Test
    public void getMock() throws Exception {
        // 模拟接口的返回值  getName里面的参数满足条件可以自己设置
        when(sparkService.getName(eq("wsl"))).thenReturn("此处为模拟单个接口参数的返回结果");
        ResultActions perform = mvc.perform(post("/api/mockBean") // post方法 请求路径
                .contentType(MediaType.APPLICATION_JSON));
        perform.andReturn().getResponse().setCharacterEncoding("UTF-8"); // 解决response返回乱码
        perform.andDo(print()); // 打印返回的执行结果
    }



    /**
     * 模拟传递多个参数
     * @throws Exception
     */
    @Test
    public void getMockException() throws Exception {
        // 模拟接口的返回值  getName里面的参数满足条件可以自己设置
        when(sparkService.getName(eq("Spark"),eq("24"))).thenReturn("此处为多个接口参数模拟抛出的异常");
        ResultActions perform = mvc.perform(post("/api/getMockMulParamters") // post方法 请求路径
                .contentType(MediaType.APPLICATION_JSON));
        perform.andReturn().getResponse().setCharacterEncoding("UTF-8"); // 解决response返回乱码
        perform.andDo(print()); // 打印返回的执行结果
    }



    /**
     * 根据具体的参数 模拟抛出的异常
     * @throws Exception
     */
    @Test
    public void getMockMulParamters() throws Exception {
        // 模拟接口的返回值  getName里面的参数满足条件可以自己设置
        when(sparkService.getName(eq("Spark"),eq("24"))).thenThrow(new Exception("此处为多个接口参数模拟抛出的异常"));
        ResultActions perform = mvc.perform(post("/api/getMockMulParamters") // post方法 请求路径
                .contentType(MediaType.APPLICATION_JSON));
        perform.andReturn().getResponse().setCharacterEncoding("UTF-8"); // 解决response返回乱码
        perform.andDo(print()); // 打印返回的执行结果
    }

项目地址:https://gitee.com/goodwangboy/junit-test.git
上面介绍的方式可以帮助我们模拟未开发完成的接口,无权限的接口等等,不用等待接口提供方开发完成再去开发,大大提高开发效率。由于在开发过程中接口会出现发版,修改等不稳定的情况,使用这种MockBean的模拟接口调试开发方式,可以大大节省开发的调试时间。

欢迎关注公众号
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:32:02  更:2021-10-06 12:32:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:44:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码