[英]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.