繁体   English   中英

jOOQ:模拟 DAO 对象

[英]jOOQ: Mocking DAO objects

jOOQ 3.5.0

我目前正在尝试为使用 jOOQ 生成的 DAO 对象的资源编写单元测试。

我注意到 DAO 层次结构中的一个基类( DAOImpl )有许多final方法,这使得它对模拟不友好(我不包括像 Powermock 这样的字节码操纵器作为解决方案)。 我目前正在使用MockConnectionMockDataProvider模式来填充我的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM