gpt4 book ai didi

java - 为 jOOQ 单元测试创​​建一个类似对象的任意表

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:14 25 4
gpt4 key购买 nike

我在使用 jOOQ 的 MockDataProvider 时遇到问题在单元测试中模拟 SQL JOIN。

使用 jOOQ 实现的 JOIN 选择包含 UUID 的单个列。因此结果类型为Result<Record1<UUID>> 。在相关的单元测试中,我想使用 MockDataProvider 来模拟这个结果。 ,但我找不到初始化 Result 的正确方法,因为我找不到创建类似对象的表的方法,所以我可以传递给 newResult方法。我知道有一些table DSL中的方法,但签名对于我的用例来说似乎是错误的。

此外,由于此时单元测试无法运行,我不确定创建 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;
}
}

最佳答案

我怀疑这与 jOOQ 用户组中的问题本质上是同一个问题:

https://groups.google.com/forum/#!topic/jooq-user/h4pfIHjmBpo

总之,jOOQ 3.4 中将添加一个方法(使用 issue #3139 ),帮助您为任意 Record 类型创建此类 Result 对象。同时(在 jOOQ 3.4 发布之前),您将不得不通过反射创建一个新的 org.jooq.impl.ResultImpl。

关于java - 为 jOOQ 单元测试创​​建一个类似对象的任意表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24240295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com