赝品、存根和假货

测试替身(Test Double)用于替换测试中的真实依赖项。桩(Stub)返回预设结果,不做任何检查。模拟(Mock)是一种桩,它还会记录调用方式,以便测试可以断言交互确实发生过——例如"charge was called once with 20" 。伪造(Fake)是一个可运行的简化实现,例如内存数据库或维护状态的 API。

工作原理

桩(Stub)适用于只需要依赖项即可响应的测试。模拟(Mock)适用于调用本身就是待验证行为的测试。伪(Fake)适用于执行序列操作(例如,先创建,再读取,最后更新)的测试,其中预设的答案必须能够预测每个步骤。在 HTTP 测试中,这三种通常统称为"mock APIs" 。

误解

更多的模拟意味着更好的隔离。过度模拟的测试会断言代码的编写方式而非其实际功能,每次重构都会失败,却会遗漏真正的集成错误。一个行为与真实服务类似的模拟对象通常能以更少的设置捕获更多问题。

点击这里试试

严格来说,这个游乐场是一个假的:写入操作会在你的沙箱中持久存在,因此 POST 请求对后续的 GET 请求是可见的,版本会不断更新,库存也会耗尽——存根不可能有这样的行为。

资料来源

其他术语

阅读英文版

所有术语 · 测试技巧 · 全部 39 个模拟 REST API

最后更新时间