SPT术语库

测试替身 Test Double

结算页面依赖外部支付服务,但测试不能每次都发起真实扣款,于是用 stub、mock 或 fake 提供可重复的调用结果。

技术栈与工具约 10 分钟 · 从真实需求理解

1测试替身怎样替换真实依赖又不改变测试目标?

TEST DOUBLE · PAYMENT-017支付依赖隔离

替换真实支付边界,验证调用和结果但不触发扣款。

DEPENDENCY MODE
RESPONSE
REAL PAYMENT API01
POST /charge

会产生真实副作用

STUB02
STUB

返回固定响应

CALL03
waiting

等待依赖调用

CONTROLLED RESULT04

等待替身响应

尚未发起调用

Test Double 是测试边界里的替代依赖。结算页面仍然要验证“调用支付服务后如何处理结果”,但测试不应该每次都连接真实支付 API 或真的扣款,所以可以用 Stub、Mock 或 Fake 提供可控的响应和调用记录。

  • 真实依赖负责生产环境的支付服务,测试替身只在测试边界内接住同一个调用。
  • Stub 通常直接给固定响应,Mock 还会检查调用是否按预期发生,Fake 则用简化实现模拟真实行为。
  • 替身返回成功、失败或边界数据,让测试可以重复验证页面处理,而不依赖网络和真实副作用。

2测试替身不是把真实依赖永久换掉

测试替身的边界是测试环境中的依赖替换,不是把生产服务改成假的。它也不等同于只返回一个固定值:Stub、Mock、Fake 的关注点不同,但都应该让测试目标保持清楚、结果可重复。

  • 看到测试时绕过真实支付副作用,想到 Test Double。
  • 看到生产环境仍然连接真实服务,说明替身没有越过测试边界。
  • 看到 Mock 验证调用参数,不要把它误认为已经验证了真实支付服务本身。

3一个测试替身由哪些边界组成?

TEST DOUBLE · PAYMENT-017依赖替换
01
REAL DEPENDENCYPOST /charge

生产环境的支付服务

02
DOUBLESTUB / MOCK / FAKE

测试边界内替换

03
CALLcharge(order)

被测代码发起调用

04
RESULT200 / 402

可重复的响应结果

拆开一次测试替身,可以看到真实依赖、替换边界、测试调用和可控结果。四部分放在一起,才能看清测试到底替换了什么,又验证了什么。

  • REAL DEPENDENCY 是生产环境中的真实支付或外部服务。
  • DOUBLE 是测试中接管同一接口的 Stub、Mock 或 Fake。
  • CALL 是被测代码发起的调用,测试要验证它是否正确到达替换边界。
  • RESULT 是替身返回的可控结果,页面据此检查成功、失败和边界处理。

4怎样把测试替身交给 Agent?

请为结算页面隔离真实支付依赖:测试时允许切换 Stub、Mock 或 Fake,调用后返回可重复的成功/失败结果或参数记录;明确测试替身只在依赖边界内生效,不能真的扣款。

5不用背,看看你能不能判断

1 / 3

Test Double 的主要作用是什么?

请选择一个最符合题意的答案

选择答案后自动进入下一题

社区延伸

看别人真实遇到过什么

社区帖子还没有关联到这个词条。