单元测试中的 Dummy、Stub、Spy、Fake 和 Mock
单元测试用来验证一个单元(模块、函数或类)的工作是否正常,测试过程通常需要其他单元进行配合。这种情况下,我们引入测试替身(Test doubles)来替代测试单元的外部依赖,使得测试单元能够顺利运行。这些测试替身分为五种,分别是:
- Dummy
- Stub
- Spy
- Fake
- Mock
Dummy
或称为 Dummy Object。指在测试中用来传递而不会被使用的对象,通常是为了让单元测试代码能够运行,而不起任何作用的填充数据。
Stub
在测试中总是返回期望值,通常使用硬编码。仅仅提供保证测试单元能够正常的运行的最小化代码。
Spy
类似于 Stub,会记录自身被调用的情况。用于验证替身有没有被正确地调用。
Fake
或称为 Fake Object。一种可以模拟真实外部依赖组件工作方式的替代组件。可视为真实组件的一种简易平替版。
Mock
或称为 Mock Object。根据预先编写的逻辑,根据输入参数返回调用者所期望的值。用于验证测试单元是否按照预期和 Mock 单元进行交互。