Mock对象是Test Double的一种。您正在使用模拟对象来测试和验证被测类与其他类的协议/交互。通常,您会期望“编程”或“记录”期望值:方法调用您希望您的类对基础对象执行的操作。例如,假设我们正在测试一种服务方法来更新Widget中的字段。在您的体系结构中,有一个WidgetDAO可以处理数据库。与数据库的对话很慢,设置和清理之后很复杂,因此我们将模拟WidgetDao。让我们考虑一下服务必须做什么:它应该从数据库中获取一个Widget,对其进行处理,然后再次保存。因此,在带有伪模拟库的伪语言中,我们将具有以下内容:Widget sampleWidget = new Widget();WidgetDao mock = createMock(WidgetDao.class);WidgetService svc = new WidgetService(mock);// record expected calls on the daoexpect(mock.getById(id)).andReturn(sampleWidget); expect(mock.save(sampleWidget);// turn the dao in replay modereplay(mock);svc.updateWidgetPrice(id,newPrice);verify(mock); // verify the expected calls were madeassertEquals(newPrice,sampleWidget.getPrice());这样,我们可以轻松测试依赖于其他类的类的驱动开发。