文档章节

[译]Mimic, 轻量级Web Service测试桩

超爱fitnesse
 超爱fitnesse
发布于 2015/06/27 13:48
字数 952
阅读 108
收藏 0

原文标题:Mimic, simple web service stubs for testing
原文: https://github.com/lukeredpath/mimic/blob/develop/README.md
译者注:
fake, stub, mock三个测试概念老是被混用,它们中文意思分别是

  • fake——假的,伪,(形容词),例句:a fake web service
  • stub——桩,(名词),例句:a web service stub,稻草人,充气娃娃等都是stub。
  • mock——模拟,(动词),例句:mock a web service

很多技术文章中出现的存根的英文原文就是"stub",本文把stub翻译成测试桩

Mimic, 轻量级Web Service测试桩

Mimic是什么?

Mimc是一个测试工具,当你在对访问web service的应用或库做集成测试时,可用来模拟那些web service实现。

为什么不用stub?

目前已经有些比较好的工具,比如 FakeWeb,允许你在做单元测试或功能测试时,在低层次模拟请求响应。但是我们在对代码做集成测试时,希望能做到面面俱到的测试。

Mimic启动一个能响应http请求的真实Web服务器,替换你的网络应用程序实际运行所需的web service。这让你能在接近真实环境的情况下,对各种服务响应作出测试。

当然,因为Mimic会对真实http请求作出响应,它也能测试Ruby语言之外开发的网络应用。

例子

定义一个请求测试桩:

Mimic.mimic.get("/some/path").returning("hello world")

使用RestClient访问上述请求:

$ RestClient.get("http://www.example.com:11988/some/path") # => 200 | hello world

定义多个请求测试桩; 注意你可以用不同的方法为同一个url定义多个请求。

Mimic.mimic do
  get("/some/path").returning("Hello World", 200)
  get("/some/other/path").returning("Redirecting...", 301, {"Location" => "somewhere else"})
  post("/some/path").returning("Created!", 201)
end

你甚至可以使用中间件Rack,比如应付身份验证之类的公共测试场景:

Mimic.mimic do
  use Rack::Auth::Basic do |user, pass|
    user == 'theuser' and pass == 'thepass'
  end
      
  get("/some/path")
end

最后,因为Mimic是用Sinatra处理请求的,你可以像Sinatra应用代码那样定义请求测试桩:

Mimic.mimic do
  get "/some/path" do
    [200, {}, "hello world"]
  end
end

非Ruby环境下使用Mimic

Mimic支持通过HTTP REST API 配置生成请求测试桩。所以,只要能发出http请求,就能使用Mimic。

首先,你需要后台启动Mimic。你只需要一个简单的Ruby脚本和Ruby gem库 daemons :

#!/usr/bin/env ruby
require 'mimic'
require 'daemons'
    
Daemons.run_proc("mimic") do
  Mimic.mimic(:port => 11988, :fork => false, :remote_configuration_path => '/api') do
    # configure your stubs here
  end
end

设置Ruby脚本的可执行权限,并启动:

$ your_mimic_script.rb start (or run)

启动后,远程配置api(/api/get或/api/post)就将生效——这也是可以配置的,因为你要模拟的请求url都不能与远程配置api的url相同,也不能作为远程配置api的下级url。

远程配置api支持JSON和PList请求头格式, 默认为JSON。你需要为Plist格式请求设置Content-Type为 application/plist。

下面Mimic请求桩定义配置(使用Ruby DSL):

Mimic.mimic.get("/some/path").returning("hello world")

对应的REST API配置方式为:

$ curl -d'{"path":"/some/path", "body":"hello world"}' http://localhost:11988/api/get

类似的,一个POST请求要如下配置:

$ curl -d'{"path":"/some/path", "body":"hello world"}' http://localhost:11988/api/post

远程配置api的最后面的动词就是你模拟的http请求的方法,http请求的路径,响应主体,响应状态码,响应头在POST数据(使用JSON或PList格式)中定义。更多例子请看github代码中附带的Cucumber测试文件。

对上述REST API的 Objective-C 封装 也已提供, 你可以用来测试OSX and iOS 应用。

贡献者

License

作为惯例, github仓库中的代码使用MIT license发布。

© 著作权归作者所有

超爱fitnesse
粉丝 28
博文 33
码字总数 44160
作品 0
浦东
QA/测试工程师
私信 提问
轻量级Web服务测试桩--Mimic

Mimic, 轻量级Web服务测试桩 开发语言:Ruby 注册一个Web请求测试桩: Mimic.mimic.get("/some/path").returning("hello world") 使用RestClient访问该请求: $ RestClient.get("http://www.ex......

超爱fitnesse
2015/06/25
471
0
【亲测】RMI之Hassion

一、RMI RMI(Remote Method Invocation,远程方法调用)是Java在JDK1.2中实现的, Java RMI 支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。(即它能...

Armymans
2018/11/30
0
0
是的,Safari 支持 Service Worker 了

12月 20日,Apple 发布的 Safari 46 技术预览版里,Mac 端的 Safari 将默认打开 Service Worker, 是的,Safari 支持 Service Worker 了,PWA 时代不远了。 其实回顾一下, 2017 年 7 月 14...

2017/12/21
0
0
web自动化测试之百度经验-HTTP层面的Web Service自动化测试

前言 我们之前在测试web service的时候尝试过多种方法:比如使用SoapUI;使用本地代理类编程等。前者不太方便做自动化,后者是从SOAP协议层面进行测试,数据组织不太方便,测试程序相对复杂,...

疯子阳
2015/10/13
139
0
[译] JavaScript 是如何工作的:Web 推送通知的机制

原文地址:How JavaScript works: the mechanics of Web Push Notifications 原文作者:Alexander Zlatkov 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Starrier ...

LeviDing
2018/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

006-Docker中导出单个或多个tar包

docker中导出单个镜像和多个镜像的tar包 docker save [images] > [name.tar] docker save [images] [images] > [name.tar]...

伟大源于勇敢的开始
今天
6
0
Kotlin基础语法学习

安装好安卓studio,以及插件支持Kotlin 就可以在创建项目的时候选择 Kotlin语言了。 https://www.jianshu.com/p/4ab13691d681 参考手册: https://www.runoob.com/kotlin/otlin-android-setu...

T型人才追梦者
今天
4
0
java实现简单计算器

1.概述 之前作者写过一篇文章,也是关于计算器的,用的是C++与Qt,链接在这里 这次用java的swing写的(这差距好像有点大,好吧是qt太强了). 先上图: 2.UI 总体布局使用流布局. (1)文本框 文本框就...

Blueeeeeee
今天
4
0
纯CSS实现DIV悬浮(固定位置)

纯CSS实现的DIV悬浮效果(固定位置),兼容常用的浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗等。效果如下: 实现代码: <!DOCTYPE html> <html> <head> <meta ...

独钓渔
今天
6
0
OSChina 周二乱弹 —— 给我来个女菩萨

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐#分享XXXTENTACION/Travis Barker的单曲《Pain = BESTFRIEND》: 《Pain = BESTFRIEND》- XXXTENTACION/...

小小编辑
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部