【每日一题】Mock、Stub、Fake、Spy 的区别(附参考答案)

题目:在测试开发中,以下关于 Test Double 各类型的说法,正确的是?(单选)

A. Stub 的核心作用是验证被测对象是否按预期调用了某个方法的参数和次数 B. Fake 是一个具备真实简化逻辑的替代品,例如用内存 SQLite 替代生产数据库 C. Mock 和 Stub 是同一概念的不同叫法,在实际使用中没有区别 D. Spy 不能记录方法调用日志,它和 Stub 一样只返回预设值

难度:初级 题型:笔试(单选)

:point_right:参考答案:B

解析:

  • A 错:验证调用行为(call count / parameters)是 Mock 的核心职责,Stub 只负责返回预设值
  • B 对:Fake 有可工作的简化实现(如 InMemoryRepository、FakeSMSProvider),行为接近真实但轻量
  • C 错:Stub 关注"给什么返回值",Mock 关注"是否以某种方式被调用",职责不同
  • D 错:Spy = 真实对象 + 记录能力,既能调用真实逻辑又能记录方法调用