3.3.1 分类:Dummy、Stub、Spy、Mock、Fake 在单元测试的疆域里,有一片被无数工程师反复踏足却少有人真正驻足深究的土地——测试双(Test Doubles)。它不是测试框架的炫技彩蛋,不是 mocking 库的语法糖衣,而是一套精密、可推演、需权衡的行为建模工程学。当我们写下 ,真正被验证的从来不是 本身那几行 和 ;我们验证的是:当服务层向仓储层发出“保存一个用户”的指令时,仓储层是否按契约接收、处理、响应——而这个“仓储层”,在测试中根本不能是真实的 。它必须是一个可控、可观测、可推理的替身。这个替身,就是测试双。 但问题来了:替身不是铁板一块。把数据库连接池关掉、让 SQL 执行直接返回 ,这叫 Dummy;给 硬编码返回一个 ,这是 Stub;