1

厌倦了手工制作的模拟,我正在尝试将 Mockito 引入我的项目。

假设我有一堆数据库访问器,它们隔离给定用例(或服务)的所有 Hibernate 查询。所以我可以有这样的接口RoutingDao,,,UserDaoReportingDao这些接口中的每一个都扩展了一个非常通用Dao的方法,例如commit()rollback()reload(Entity)。对于 Hibernate,后者应该使用当前会话重新加载分离的实体。在测试中,它应该只返回它的参数。

使用手工制作的模拟很容易:我有一个MockDao该方法的通用实现,MockRoutingDao并将扩展MockDao和使用该实现。我在 Mockito 中看到的一种方法是创建MockRoutingDao扩展MockDao并将未模拟的调用委托给它的方法。未继承的方法将使用spy(). 但这很丑 - 我仍然需要手工制作一个模拟,而部分模拟和继承以重用某些实现的整个想法是一团糟。

我该如何改进它?为可以在许多测试中重用的模拟方法创建共享实现的最佳实践是什么?

4

1 回答 1

1

您真的想编写一个 org.mockito.stubbing.Answer 实现来处理每个 *DAO 模拟将处理的常见内容。

您仍然可以when为此添加自定义存根。

于 2011-01-26T16:18:22.400 回答