抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

服务虚拟化——Mocking 的替代方案

2013 年 5 月 21 日

通过依赖注入进行 Mocking 非常麻烦。即便最简单的应用,往往也会涉及创建新的接口,并且依赖于 IoC 容器,而且通常会增加大量不必要的复杂性。除此种种,开发者仍然必须编写 Mock 本身,而其中大部分除了过于简单的单元测试外并没有其他用途。

而诸如 CA Lisa 服务虚拟化等产品提供了一个替代方案。这些测试工具支持开发者在网络层面 Mock 整个服务,而不是 Mock 单独的类。从应用角度看,它是与真实的服务后端对话,哪怕实际上该后端甚至可能尚不存在。

有两个建立虚拟化服务的常用方法。第一个方法是,从契约(例如,一个WSDL 或其他协议特定的描述符)开始,创建预定响应。开发者可以使用一般的Java 或.NET 代码手工完成,或是使用商业产品来完成。该方法的优点之一在于,编写组件的团队无需等待服务的真实版本完成。其缺点则在于,真实版本需要实际匹配模拟版本,而随着时间的推移,这将成为一个值得商榷的命题。

另一个方法是使用流量记录。在被测组件及其下游依赖之间安放一个工具。基本上,该工具扮演的是代理的角色,收集关于组件间如何交互的信息。稍后这些记录可以被用于模拟组件和它依赖的服务器之间的会话。

这两个方法支持大部分通信协议。借助恰当的插件和过滤器,该测试工具应该能够支持消息队列、REST、SOAP、原始TCP,或其它任何交换方式。

查看英文原文 Service Virtualization as an Alternative to Mocking


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013 年 5 月 21 日 10:062344
用户头像

发布了 256 篇内容, 共 52.8 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

去面试,公司问我生辰八字。

yes

面试

JavaScript 图片转文字,文字转语音

空城机

JavaScript 前端 4月日更 tesseract 图片转文字

8x Flow 业务建模法(二):再看什么是业务逻辑

胡皓

领域驱动设计 DDD 业务建模 8xFlow 业务逻辑

区块链走红 江苏多行业应用迈入"可信时代"

CECBC区块链专委会

农产品

没有lrzsz,怎么传文件到服务器?

运维研习社

运维 工具

外网访问Ubuntu下的Tomcat

U+2647

tomcat ubuntu 4月日更

架构实战营-模块一作业

俞立夫

架构实战营

模块一,学习总结

俞立夫

架构实战营

如何做决策?

石云升

决策 28天写作 职场经验 管理经验 4月日更

如何在Deno中使用 Node 模块?

Sakura

4月日更

与JVM做朋友系列(3)又见Class字节码

李浩宇/Alex

JVM X86 stack register

架构实战营 模块一:课后作业

👈

架构实战营

「架构师训练营 4 期」 第十三周 - 001&2

凯迪

架构师训练营 4 期

博客主题用腻了?来试试赛博朋克 2077 主题吧!

清秋

CMS Hexo 博客 4月日更

回归本我还是追逐名利,技术人在中年危机下的抉择?

刘华Kenneth

管理 职场 中年危机

架构实战营 模块 1 课后作业

eoeoeo

架构实战营

第13周课后练习-数据应用(二)

潘涛

架构师训练营 4 期

sql执行顺序优化

大数据技术指南

sql 4月日更

与JVM做朋友系列(2)再见类加载器

李浩宇/Alex

JVM ClassLoader 类加载器

华仔架构实战营 - 作业 - 模块1

曲元洪

架构实战营

区块链:颠覆其外,守旧其中

CECBC区块链专委会

互联网

【极客大学】模块一作业

冬天的树

架构实战营 模块一:学习总结

👈

架构实战营

区块链开发主流语言和核心优势

CECBC区块链专委会

区块链

3.4 Go语言从入门到精通:包管理工具之Go module

xcbeyond

golang go语言 go modules Go语言从入门到精通 4月日更

Hadoop 3.x 版本相对于 Hadoop 2.x的新特性

五分钟学大数据

hadoop 4月日更

华仔训练营第一次作业

方堃

强化学习—DQN:不讲前世,就论今生

打工人!

深度学习 强化学习 深度强化学习 图解源码分析 DQN

「Android渲染」为什么alpha渲染性能低?

李小四

Android渲染 Alpha 渲染

架构师实战营 模块一作业(微信业务架构和学生管理系统架构备选方案)

代廉洁

架构实战营

零基础学Tableau系列 | 04—标靶图、甘特图、瀑布图

不温卜火

数据可视化 数据清洗 4月日更

Study Go: From Zero to Hero

Study Go: From Zero to Hero

服务虚拟化——Mocking的替代方案-InfoQ