Gerard Meszaros 正在编写《xUnit测试模式》。他遇到的一件尴尬的事情是 stub, mock, fake, dummy 的各种名称的定义,以及人们用来替代测试系统的某些部分的其他东西。为了解决这个问题,他提出了自己的词汇表,我认为这个词汇表值得进一步传播。
他使用的通用术语是测试替身(想想特技替身)。 测试替身是一个通用术语,用于替换生产对象以进行测试的任何情况。 Gerard 列出了多种类型的测试替身:
Dummy对象用于填充参数列表,实际上不会真正的使用。
Fake对象实际上已经有了可以工作的实现,但是通常会采取一些捷径,这使得它们不适合放在生产环境。( 内存数据库比如 SQLite 就是一个好例子)
Stub为测试期间的调用提供了预设的返回值,通常不响应超出测试内容的请求。
Spy也是 Stub,并且会记录一些读对象如何被调用的信息。例如一个 E-mail 服务记录了多少消息被发送。
Mock 预先编程了期望的返回值,这些期望的返回值形成了它们预期接收到的调用规范。 如果它收到了他们非预期的调用,可以抛出异常,并在验证过程中进行检查是否获得了所有调用的期望结果。
(完)