簡體   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