RSpec 测试替身:存根与模拟的使用指南
1. 测试中的存根与期望
在测试里,首行定义存根,末行设置期望。在 RSpec 中,被监视的方法在检查是否被调用之前,必须先声明为存根。使用监视(spies)能缓解使用测试替身时常见的问题,即模拟期望不明确。查看设置了模拟期望的测试时,往往难以理解正在测试的行为,更难明白测试失败的原因。而监视能明确声明预期行为,还与“给定/当/则”(given/when/then)的测试结构更契合,可在“给定”部分声明存根,在“则”部分单独设置期望。
2. 创建存根
存根是对对象全部或部分的替代,它会阻止正常的方法调用,转而返回创建存根时预设的值。在 RSpec 里,存根有两种类型:
- 全替身(Full Doubles) :创建仅作为存根存在的完整对象。
- 部分替身(Partial Doubles) :对现有对象的特定方法进行存根处理。
| 类型 | 适用场景 |
|---|---|
| 部分替身 | 当你想确保大部分真实对象行为时使用。例如,使用“真实”的 ActiveRecord 对象,但想绕过一两个危险或昂贵的方法。 |
| 全替身 | 当存根对象的行为无关紧要,仅其公共接口重要时使用。比如测试代码是否能与特定 API 协作,而非特定对象。 |
超级会员免费看
订阅专栏 解锁全文
2298

被折叠的 条评论
为什么被折叠?



