[英]jOOQ: Mocking DAO objects
jOOQ 3.5.0
我目前正在尝试为使用 jOOQ 生成的 DAO 对象的资源编写单元测试。
我注意到 DAO 层次结构中的一个基类( DAOImpl
)有许多final
方法,这使得它对模拟不友好(我不包括像 Powermock 这样的字节码操纵器作为解决方案)。 我目前正在使用MockConnection
和MockDataProvider
模式来填充我的 DAO,但对于断言 DAO 方法调用来说,这似乎有点低级。
例如,我的资源正在调用FooDao.createFoo(foo)
并且我在测试中的拦截点是MockDataProvider.execute(...)
它为我提供了一个带有原始 SQL 的上下文对象和一个绑定对象数组值。
为了让测试断言create
已被调用,我需要评估原始 sql。 当 DAO 有可以断言的漂亮、流畅的方法时,做这样的事情似乎很浪费。
所以我的问题是:有没有更好的方法来单元测试 DAO 的使用? 似乎我需要很多样板才能测试一份简单的合同....
FooDao fooDao = createMock(FooDao.class);
....
when(fooDao.fetchById(id)).thenReturn(foo);
比文档中的示例更可取。
现在,如果不使用 PowerMock 之类的东西来模拟 jOOQ DAO,将很难模拟 jOOQ DAO,它会为您从字节码中删除final
以覆盖这些方法。
然而,在未来的 jOOQ 版本中,我们可能会为 DAO 实现接口代码生成。 那些会更容易嘲笑。
另见: https ://github.com/jOOQ/jOOQ/issues/3868
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.