测试替身 Test Double
test double 是什么
在软件开发和测试领域,"test double" 是一个通用术语,用来指代在测试环境中代替一个真实组件的对象。
这个术语来自于拍摄电影时用替身(stunt double)来代替主演执行危险动作的做法。
在软件测试中,test doubles 用于模拟那些在测试期间难以使用的组件,例如数据库、网络服务或任何外部系统。
测试替身的核心能力
测试替身的核心能力是,将被测代码和被测代码的依赖隔离开。
比如,我们可以将被测代码的依赖都替换了,然后就可以单独测试被测代码了。
也可以替换部分依赖,然后测试被测代码和部分依赖。
测试替身的使用场景
-
加速执行测试
- 连接数据库
- 请求后端接口
- setTimeout
- ...
-
使执行变得确定
- 请求后端接口
- 随机数
- 日期
- ...
-
可以模拟特殊情况
-
网络错误
vi.mocked(fetchAddTodo).mockImplementation((title) => {
return Promise.reject("Network Error");
});
-
-
暴露隐藏的信息
当需要测试需要用到私有内容时,可以使用测试替身避免暴露私有内容。