jOOQ 3.5.0
我正在尝试为使用jOOQ生成的DAO对象的资源编写单元测试。
我注意到DAO层次结构中的一个基类(DAOImpl
)有许多final
方法,这使得它对mock非常不友好(我将像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);
比example in the docs更受欢迎。
答案 0 :(得分:1)
现在,如果不使用像PowerMock那样从字节码中删除final
以覆盖这些方法的东西,很难模仿jOOQ DAO。
在即将发布的jOOQ 3.6中,我们计划为DAO实现接口代码生成。那些会更容易嘲笑。