自动化测试的一个关键是在运行时用一个模拟对象来代替系统中的一部分。这样,应用程序中被测试的那部分与系统其他部分之间的交互可以被严格地掌控,从而更容易确定应用程序中这一特定部分的行为。这样的模拟对象常常就是mock/stub和dummy等。
1.哑对象(dummy object)是指那些被传递但不被真正使用的对象。通常用于添充参数列表。
2.假对象(fake object)可以真正使用的实现,通常利用一些捷径,不适合在生产环境中使用,比如内存数据库。
3.桩(stub)在测试中为每个调用提供一个封装好的响应,通常不会对测试之外的请求进行响应,只用于测试。
4.spy是一种记录一些关于它们如何被调用的信息的桩。这种形式的桩可能是记录它发出去了多少个消息的一个电子邮件服务。
5.模拟对象(mock)是一种在编程时就设定了它预期要接收到调用。如果收到了为预期的调用,它会抛出异常,并且还会在验证时被检查是否收到了它们所预期的所有调用。