3 回答
TA贡献1827条经验 获得超4个赞
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 dao
expect(mock.getById(id)).andReturn(sampleWidget);
expect(mock.save(sampleWidget);
// turn the dao in replay mode
replay(mock);
svc.updateWidgetPrice(id,newPrice);
verify(mock); // verify the expected calls were made
assertEquals(newPrice,sampleWidget.getPrice());
这样,我们可以轻松测试依赖于其他类的类的驱动开发。
- 3 回答
- 0 关注
- 718 浏览
添加回答
举报