使用mockserver来进行http接口mock
转载自:https://blog.csdn.net/heymysweetheart/article/details/52227379;(注,这个不是很符合我的要求,它主要的作用是可以通过简单的代码就能filter对方的请求options,然后做出对应的响应;而我需要的是一个能够开启为http服务端来测试客户端发来的http请求的工具,然后顺便看到了这篇感觉以后可能也会用到)
前言
进行单元测试时,必须要mock掉第三方的依赖调用,而mockserver提供了足够的api来支持这种http的mock,现在简单介绍如何使用mockserver进行http接口mock。
依赖
- mockserver依赖
<dependency><groupId>org.mock-server</groupId><artifactId>mockserver-netty</artifactId><version>3.10.4</version></dependency>
- httpclient依赖
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.3.2</version></dependency>
httpclient的版本可能会出现不一致的情况,抛出异常,以上的这个版本匹配是没有异常的组合。
举例
package com.yuliang.dubbo.service;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.junit.Rule;import org.junit.Test;import org.mockserver.client.server.MockServerClient;import org.mockserver.junit.MockServerRule;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import static org.hamcrest.CoreMatchers.equalTo;import static org.hamcrest.MatcherAssert.assertThat;import static org.mockserver.model.HttpRequest.request;import static org.mockserver.model.HttpResponse.response;/*** Created by leo on 16/8/16.*/public class MockServerTest {@Rulepublic MockServerRule server = new MockServerRule(this, 5000);@Testpublic void testMockServer() throws IOException {MockServerClient mockClient = new MockServerClient("localhost", 5000);String expected = "{ message: 'incorrect username and password combination' }";mockClient.when(request().withPath("/hello/John").withMethod("GET")// .withHeader(new Header(HttpHeaders.ACCEPT, MediaType.TEXT_PLAIN))// .withQueryStringParameter(new Parameter("my-token", "12345"))).respond(response().withStatusCode(200).withBody(expected));CloseableHttpClient client = HttpClients.createDefault();HttpGet httpGet = new HttpGet("http://localhost:5000/hello/John");CloseableHttpResponse response = client.execute(httpGet);//验证输出是否是正确InputStream content = response.getEntity().getContent();InputStreamReader inputStreamReader = new InputStreamReader(content);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String responseText = bufferedReader.readLine();assertThat(responseText, equalTo(expected));}}
mock http post请求
@Testpublic void testPostMockServer() throws IOException {MockServerClient mockClient = new MockServerClient("localhost", 5000);String expected = "You have logged in successfully.";mockClient.when(request().withPath("/hello/John").withMethod("POST").withHeader(new Header(HttpHeaders.ACCEPT, MediaType.TEXT_PLAIN))// .withQueryStringParameter(new Parameter("my-token", "12345")).withBody("username=foo&password=123456")).respond(response().withStatusCode(200).withBody(expected));CloseableHttpClient client = HttpClients.createDefault();HttpPost httpPost = new HttpPost("http://localhost:5000/hello/John");httpPost.addHeader("Accept", "text/plain");ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("username", "foo"));nameValuePairs.add(new BasicNameValuePair("password", "123456"));httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));CloseableHttpResponse response = client.execute(httpPost);//验证输出是否是正确InputStream content = response.getEntity().getContent();InputStreamReader inputStreamReader = new InputStreamReader(content);BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String responseText = bufferedReader.readLine();assertThat(responseText, equalTo(expected));}
使用mockserver来进行http接口mock的更多相关文章
- 使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock
使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock 在上一篇<electron快速开始>里讲述了如何快速的开始一个electron的应用程序,既然electr ...
- RPC接口mock测试
转载:http://blog.csdn.net/ronghuanye/article/details/71124127 1 简介 Dubbo目前的应用已经越来越广泛.或者基于Dubbo二 ...
- rpc接口mock平台
转载:http://blog.csdn.net/ronghuanye/article/details/71124320 1.简介 平台采用struts.spring.mybatis框架开发设计,主要用 ...
- anyproxy学习2-rule模块实现接口mock功能
前言 AnyProxy不仅仅可以抓包,还可以拦截请求并修改服务端响应,实现接口mock功能. 面试时候经常会问到第三方支付如何测试这种,如果对接的第三方没提供测试环境,那么就需要搭建一个mock服务器 ...
- 努力一周,开源一个超好用的接口Mock工具——Msw-Tools
作为一名前端开发,是不是总有这样的体验:基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班. 为了摆脱这种痛苦,经过一周的努力,从零 ...
- RAP 接口Mock示例
前后端分离式开发的思考 目前大部分公司都实行了前后端分离开发.然而在项目开发过程当中,经常会遇到以下几个尴尬的场景: 1.前端开发依赖于后端接口数据,需要与后端接口联调才能获得数据展示,从而拖慢了开发 ...
- Doclever 接口mock 操作
查看 接口项目mock 查看说明 假设 本机项目路径为 http://localhost:8080 >> 启动 node node net.js http://org.my.com/mo ...
- fiddler实现后端接口 mock(不需要修改开发代码)
转载:http://blog.csdn.net/huazhongkejidaxuezpp/article/details/50435552 步骤 1. 获取 接口 定义(接口返回的json串) ...
- SpringBoot开发mockserver及生成swagger接口文档
通过springboot开发mock server,包含get及post接口,用于练习接口自动化及jmeter很方便 当然,也为后面jenkins持续集成做基础(开发push代码后 → jenkin ...
随机推荐
- Java 获取CPU、内存、外网IP等硬件信息
import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.Input ...
- Python数据分析--Pandas知识点(一)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘 1. 重复值的处理 利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID. im ...
- subprocess.Popen在win10下会有异常
win10运行下 会报740错误 查了下搜索结果 是uac问题 但uac已经是关闭状态 后直接使用os.popen进行替换 运行ok
- php 图像处理函数
gd_info 函数:获取当前安装的GD库的信息 getimagesize 函数:获取图像的大小 image_type_to_extension 函数:获取图像类型的文件后缀 ima ...
- vue之微信登录
参考文章https://www.cnblogs.com/examine/p/4634947.html 微信开放平台和公众平台的区别1.公众平台面向的是普通的用户,比如自媒体和媒体,企业官方微信公众账号 ...
- Oracle_PL/SQL(1) 匿名块
1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库.为什么使用PL/SQL?Orade是一种关系型数据库, 用来访问关系型数据库的语言是 “结构 ...
- PAT 1056 组合数的和(15)(代码)
1056 组合数的和(15 分) 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出: ...
- Python.URLs
1. The Future of Asynchronous IO in Python https://medium.com/@paulcolomiets/the-future-of-asynchron ...
- 简单使用DESeq2/EdgeR做差异分析
简单使用DESeq2/EdgeR做差异分析 Posted: 五月 07, 2017 Under: Transcriptomics By Kai no Comments DESeq2和EdgeR都 ...
- IOS 将图片转换为圆角图
UIImage+wiRoundedRectImage.h #import <UIKit/UIKit.h> @interface UIImage (wiRoundedRectImage) + ...