Skip to main content

测试替身 Test Double

test double 是什么

在软件开发和测试领域,"test double" 是一个通用术语,用来指代在测试环境中代替一个真实组件的对象。

这个术语来自于拍摄电影时用替身(stunt double)来代替主演执行危险动作的做法。

在软件测试中,test doubles 用于模拟那些在测试期间难以使用的组件,例如数据库、网络服务或任何外部系统。

测试替身的核心能力

测试替身的核心能力是,将被测代码和被测代码的依赖隔离开。

比如,我们可以将被测代码的依赖都替换了,然后就可以单独测试被测代码了。

也可以替换部分依赖,然后测试被测代码和部分依赖。

测试替身的使用场景

  1. 加速执行测试

    • 连接数据库
    • 请求后端接口
    • setTimeout
    • ...
  2. 使执行变得确定

    • 请求后端接口
    • 随机数
    • 日期
    • ...
  3. 可以模拟特殊情况

    • 网络错误

      vi.mocked(fetchAddTodo).mockImplementation((title) => {
      return Promise.reject("Network Error");
      });
  4. 暴露隐藏的信息

    当需要测试需要用到私有内容时,可以使用测试替身避免暴露私有内容。