我有一個問題,使用jOOQ的MockDataProvider
來模擬單元測試中的SQL JOIN。爲jOOQ單元測試創建一個像對象的任意表
使用jOOQ實現的JOIN選擇包含UUID的單個列。因此結果類型爲Result<Record1<UUID>>
。在相關的單元測試中,我想用MockDataProvider
來嘲笑這個結果,但是我找不到合適的方法來初始化Result
,因爲我找不到像對象那樣創建表的方法,我可以將它傳遞給newResult
方法。我知道在DSL
中有一些table
方法,但簽名對我的用例來說似乎是錯誤的。
此外由於單元測試在此時不能運行,所以我不確定我創建UUID字段的方式是否正確。
這是我的代碼:
private class MyProvider implements MockDataProvider {
@Override
public MockResult[] execute(final MockExecuteContext ctx) throws SQLException {
final MockResult[] mockResults = new MockResult[1];
final DSLContext db = DSL.using(SQLDialect.POSTGRES);
final Result<Record1<UUID>> result = db.newResult(<some table object here>);
final Field<UUID> uuidField = DSL.fieldByName(UUID.class, "uuid");
final Record1<UUID> record = db.newRecord(uuidField);
record.setValue(uuidField, ID);
result.add(record);
mockResults[0] = new MockResult(1, result);
return mockResults;
}
}
非常感謝。所以我會等3.4 :-) – spa