江湖郎中,你要吗?

不知道说到江湖郎中,大家会想到什么。很多人可能就要联想到自己一些悲催的伤心往事,之前有同事就曾经被江湖郎中欺骗,买了很多茶叶,往事不堪回首。

今天我其实想和大家聊的话题是mountebank,为什么mountebank会和江湖郎中联系在一起呢? 因为mountebank直译的话就是“江湖郎中,骗子”, mountebank官方的图中给出的图片也很有意思,也是一个人拿着一瓶药,一副“我有药,你要吗” 的形象,如下图:


什么是江湖郎中?

Mountebank其实就是提供假的API的一个工具,其实光看字面意思也很好理解。他是第一个开源的能够提供跨平台,支持的多协议的一个工具,而且使用起来也很简单,只要把你的端口指向mountebank就可以了。 Mountebank通过配置一个或者多个imposters文件,唯一需要注意的是各个imposter的监控端口不可重复,否则会有一个imposter不会被加载。

为什么要搭建自己的mock server?

可能很多人就要问,现在不都已经开始流行契约测试了吗? 契约即为mock,那为什么还要专门的mock services呢。主要原因是需要和第三去集成,比如之前我们和银行系统集成,和SAP系统集成。这个时候其实并不需要用到契约测试,契约测试一般用于微服务架构,或者前后端分离开发。而Mock一般仅仅只是为了模拟第三方的系统,是更加轻量级的架构。

在我们当前的项目中就同时用到了契约测试(pact)和MockServer(Mountebank)。整体项目架构是WEB->BFF->Platform(微服务)->SAP(客户的第三方系统)。契约测试主要是运用于前端分离开发(BFF和platform之间),以及platform的微服务之间,而Mountebank主要是用来模拟SAP系统。

考虑到了一下几个方面,我们决定使用mock server:

1. 首先是我们需要一个mock sever,客户的SAP测试系统是一个第三方的系统,不仅极不稳定,这些都是短期内很难去和客户协调解决的问题,而且我们只有读的权限,并没有写的权限。导致我们在开发platform的过程中不能很好的和SAP集成,影响开发进度。

2. 其次,是关于持续集成,当我们做完开发,pipline需要执行所有的测试,其中包括与SAP的集成测试,试想如果SAP不稳定,那么集成测试很多时候都会因为这个失败,怎样去做持续集成;即使是SAP变的稳定了,还有另外一个棘手的问题就是,我们当前只有读的权限,如何在SAP里面创建我们所需要的测试数据,以得到我们期望的测试结果?

综合这些原因所以我们决定搭建自己的mock server。

为何我们选择了Mountebank

其实还有很多工具都和Mountebank又类似的功能,比如很常见的moco,也能够提供类似的服务,为何选择了mountebank呢?

1. 首先我们是在客户的环境里搭建mock server,客户的docker镜像有各种各样的限制,很多软件或者工具都不能再里面安装,mountebank在这方面有天然的优势,他为不同的系统提供binary的包,只需要把binary的包考到相应的环境里,不需要任何安装的步骤,非常方便。当然如果想安装,他也提供了非常方便的安装方式。

2. Mountebank是第一个开源的工具,并且支持多系统,多协议的工具。选择Mountebank也是考虑到项目可能会用到不同的协议。

3. 还有一些其他的原因,比如mountebank提供了录制,回放等一些列方便功能,以及丰富的predicate定义,使得我们能够更加灵活的构建我们的mock server。

Mountebank的具体用法

关于Mountebank的具体用法,我个人觉得最主要的两点就是predicates和responds:

Mountebank提供了很丰富的predicates,比如equals,deepEquals,contains,startsWith,endWith,可以很方便在Json文件里面进行定义,下面例子的predicates,就定义了必须是“get方法”,路径必须为“/sap/opu/odata/sap/ZHELLO_SRV/DeveloperSet”,而且query必须是"sap-language":"EN",才能获得相应的response。如果想知道某一种predicates的具体用法,详见 http://www.mbtest.org/docs/api/predicates

Responds就相对来说容易理解一些,当满足了predicates之后,才能得到相应的response,就像下面的情况,当body里面有email和password,并且是Post的方法,且满足path为/Apitesting/v1/test?type=ResponseTwo,才能得到200的response,并且返回相应的body。

关于一些其他的用法,官方文档已经将的很详细了,大家可以详见http://www.mbtest.org/。


当前Mountebank在我们项目中已经开始运用,并且已经集成到CI,但是现在对于分支策略还在进一步的讨论,我也会持续去更新本文。

希望再提到江湖郎中时,大家不仅仅想到的是某些伤心过往,”江湖郎中“在某些情况下还真的能够药到病除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容