转载自(http://blog.csdn.net/shensky711/article/details/52771797 )

MockWebServer介绍

MockWebServer是square出品的跟随okhttp一起发布,用来Mock服务器行为的库。MockWebServer使用在单元测试中,专门用来测试http请求。其原理是启动了一个本地web server,监听了本地某个端口。所以在测试的时候,需要把请求的url替换为MockWebServer提供的地址,然后web server会handle请求,记录请求,根据预设的stubbing进行反馈。MockWebServer提供接口,让我们可以在发起请求之后,验证请求是否和预期的一样,比如验证header、path等等。

MockWebServer能帮我们做什么

MockWebServer可以mock反馈,验证请求,以下是MockWebServer能帮我们做的事情:

  • 可以设置http response,设置response的header、body、status code等
  • 可以记录接收到的请求,获取请求的body、header、method、path、HTTP version(在单元测试中很有用)
  • 可以模拟网速慢的网络环境
  • 提供Dispatcher,让mockWebServer可以根据不同的请求进行不同的反馈

MockWebServer不能帮我们做什么

MockWebServer是在单元测试中启动一个web server的,主要用于测试验证。并不能像tomcat、moco一样,独立运行一个web server服务。如果需要长期运行一个web server,请选用moco或者tomcat等来搭建一个web server

MockWebServer环境配置

Android Studio中使用MockWebServer很简单,只需要在build.gradle文件中加入依赖即可。如图: 

添加依赖之后,点击sync,即可自动下载: 

MockWebServer一般步骤

  1. 为mock server设置response
  2. 客户端发起请求
  3. 用mockWebServer记录的请求进行验证

下面是一个使用的例子: 

MockWebServer使用方法

添加预置的响应

预置的相应,会按照添加的顺序依次返回给客户端。可以给MockResponse设置header、状态码、body。

模拟网速慢的情况

设置这个MockResponse返回的时候,以低速率传输。

RecordedRequest的使用

按顺序从web server把接收到的request取出来,这是一个阻塞的方法,会一直等待到web server接收到了请求之后再返回。RecordedRequest可以帮助我们验证我们的请求客户端是否按预期生成了请求,可以验证的内容分别有:

  • 请求method
  • 请求path
  • 请求header
  • 请求body
  • 请求HTTP version

Dispatcher的使用

有时候我们希望web server能根据我们的请求返回不同的response,dispatcher可以帮助我们做到这个,使用方法如下: 

开发者也可以根据不同的设定(如method、header等)放回不同的响应。

MockWebServer使用指南(转载)的更多相关文章

  1. 移动H5前端性能优化指南(转载)

    移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网 ...

  2. jQuery性能优化指南(转载)

    现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, ...

  3. MockWebServer使用指南

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52771797 本文出自: [HansChen的博客] MockWebServer介绍 ...

  4. mediastream2使用指南(转载)

    http://blog.sina.com.cn/s/blog_59d649610100diui.html 定义 Filter: 媒体库中处理数据的组件.一个filter有0到数个输入流和0到数个输出流 ...

  5. Python正则表达式指南(转载)

    转载自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html#3353540 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不 ...

  6. 最全面的Git 使用规范装逼指南[转载]

    <!DOCTYPE html> <script type="text/javascript"> window.logs = { pagetime: {} } ...

  7. 一个完整的Flexbox指南(转载)

    本文由大漠根据Chris Coyier的<A Complete Guide to Flexbox>所译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点.如需转载此 ...

  8. 自定义 URL Scheme 完全指南(转载)

    iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 URL Scheme ...

  9. webpack入门指南(转载)

    什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...

随机推荐

  1. Django前后端安全验证

    会话技术 关注公众号"轻松学编程"了解更多. 1.Cookie 客户端会话技术(数据存储在客户端) 以key-value的形式进行存储 cookie的操作都是通过Response来 ...

  2. 《Clojure编程》笔记 第5章 宏

    目录 背景简述 第5章 宏 5.0 术语 5.1 宏到底是什么 5.1.1 宏不是什么 5.1.2 有什么是宏能做而函数不能做的 5.1.3 宏vsRuby的eval 5.2 编写你的第一个宏 5.3 ...

  3. 03_ubuntu samba 安装配置

    03_ubuntu samba 安装配置 安装samba sudo apt install samba 修改samba配置文件 sudo vim /etc/samba/smb.conf [share] ...

  4. MySQL免安装图文教程 (ZIP压缩包)

    目录 一.官网下载ZIP格式安装包 二.安装MySQL 1.下载后先解压到目录 2.设置环境变量 3.在下方的"系统变量"内,新建一个 MYSQL_HOME 变量,输入你的 MyS ...

  5. springcloud-zinpin的安装与使用

    springcloud-zipkin的安装与使用 1.什么是zipkin 一个分布式系统的调用跟踪监控系统,把每次微服务调用都埋上点,打印固定格式的日志,然后收集到zipkin中,然后zipkin做数 ...

  6. VSCcode中使用git

    1.配置 文件 -> 首选项 -> 配置 出现json格式的配置项,左侧为默认设置,右侧为自定义设置: 加一行: "git.path":  Git目录下cmd下的git ...

  7. c# sqlhlpear

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  8. TCP/IP协议与Socket

    1.计算机网络体系结构分层 OSI 参考模型注重"通信协议必要的功能是什么", TCP/IP 则更强调"在计算机上实现协议应该开发哪种程序". 2.TCP/IP ...

  9. 在Docker上部署自动更新ssl证书的nginx + .NET CORE

    突发奇想要搞一个ssl的服务器,然后我就打起了docker的主意,想着能不能搞一个基于Docker的服务器,这样维护起来也方便一点. 设想 想法是满足这么几点: .NET CORE on Docker ...

  10. 运维告警排班太复杂?试试Cloud Alert智能告警排班

    前言: 之前的几篇文章有说过,通过智能告警平台Cloud Alert,将指定条件的告警以多样化的通知方式,通知到指定的人,其中的通知的方式包含电话.短信.邮件.微信.APP.钉钉等. 本篇文章就来说下 ...