## 前言
在TDD领域针对code级别的解耦测试有mock这一概念,那么在接口测试这个层面是否也有类似的工具呢?
答案是肯定的:有。那就是打桩服务。
近年来随着微服务的普及,接口测试、集成测试更多要考虑服务之间的解耦,从而达到测试的聚焦——只关注测试服务的业务部份。
## 什么是打桩服务
打桩服务呢?顾名思义用一种非侵入性的方式,让被测试服务或接口中调用的第三方服务被模拟,这样当测试到使用第三方服务的时候能够快速反馈指定内容,而无需真正调用到第三方服务。这个模拟器就是打桩服务。
## 他和mock服务的区别
一些熟悉TDD的工程师看到这里肯定觉得这就是Mock嘛!是的,他和TDD中的mock的主要区别在于mock是code级别的,而打桩服务属于应用层面的,level更高一些,力度更大一些。
Martine Fowler写过一篇关于mock和stub去别的文章,感兴趣的可以看一下:[Mocks Aren't Stubs]。总结以下几个主要的不同如下:
1. Mock 侧重于行为验证(behavior verification)
行为验证更多的是根据测试对象的被测试业务逻辑,设计被模拟对象的反馈行为,从而达到验证业务逻辑的目的。
例如一个邮件服务,如果使用Mock方式模拟它,那么当验证使用这个邮件服务的