实际调用复杂的下层或协作的类。 使用模拟对象使得开发人员可以关注与被测系统（SUT）的行为的测试，而不需要担心被测系统的依赖关系。例如，测试在特定状态下一个基于多个对象的复杂算法，如果使用模拟对象代替真实对象可以很容易地表达出来。除了复杂性问题和关注点分离带来的好处，还有实际的速度问题。使用测试驱动开发 (TDD)开发一段实际的软件很容易就有数百个单元测试。如果这些单元测试中许多都涉及到与数据库，Web服务和其他进程间通讯或网络系统的通讯，单元测试的组合会很快会慢到无法执行例行测试。而这会导致坏的习惯以