测试替身:单元测试的有效工具
1. 测试替身概述
在单元测试中,我们的目标是相对独立地测试代码单元。然而,代码往往依赖于其他事物,为了全面测试代码的所有行为,我们通常需要设置输入并验证副作用。但有时,在测试中使用真实依赖既不可行也不可取。这时,测试替身就派上了用场。
测试替身是模拟依赖项的对象,它以更适合在测试中使用的方式进行模拟。使用测试替身主要有以下三个常见原因:
- 简化测试 :某些依赖项在测试中使用起来可能很棘手且麻烦。一个依赖项可能需要大量配置,或者需要我们配置其众多子依赖项。这种情况下,测试可能会变得复杂,并且与实现细节紧密耦合。使用测试替身而不是真实依赖项可能会简化测试。
- 保护外部世界免受测试影响 :一些依赖项会产生现实世界的副作用。例如,如果代码的某个依赖项向真实服务器发送请求或向真实数据库写入值,这可能会对用户或关键业务流程产生不良后果。在这种情况下,我们可以使用测试替身来保护外部系统免受测试操作的影响。
- 保护测试免受外部世界影响 :外部世界是不确定的。如果代码的某个依赖项从其他系统正在写入的真实数据库中读取值,那么返回的值可能会随时间变化。这可能导致测试不稳定。而测试替身可以被配置为始终以相同的确定性方式运行。
2. 使用测试替身的具体场景分析
2.1 简化测试
一些依赖项的设置可能需要大量工作。依赖项本身可能需要我们指定许多参数,或者它可能有许多子依赖项,所有这些都需要配置。除了设置,测试还可能需要验证子依赖项中的期望副作用。在这种情况下,事情可能会失控,测试中
超级会员免费看
订阅专栏 解锁全文
383

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



