gpt4 book ai didi

java - 如何在 jOOQ 的 MockDataProvider 中使用示例数据创建自定义记录?

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

我正在尝试使用 jOOQ's mocking tools 实现单元测试但无法理解如何创建自定义记录并在其中添加一些数据。

这是我的MockDataProvider:

private static class MyProvider implements MockDataProvider {
@Override
public MockResult[] execute(MockExecuteContext ctx) throws SQLException {
log.trace("SQL = {}", ctx.sql());

DSLContext create = DSL.using(SQLDialect.MARIADB);
MockResult[] mockResults = new MockResult[1];

if (ctx.sql().startsWith("select `gc`.`article`.`id`, `gc`.`familia`.`iva` from")) {
Record2<Integer, Byte> record2 = create.newRecord(ARTICLE.ID, FAMILIA.IVA);
log.debug("record2 = " + record2);
log.debug("record2.value1()={}" + record2.value1());
Record2<Integer, Byte> values = record2.values(1, (byte) 10);
log.debug("record2.value1()={}" + record2.value1());
log.debug("values = " + values);
mockResults[0] = new MockResult(record2);
}
return mockResults;
}
}

这是不同日志语句的输出:

12:21:05.670 [main] DEBUG net.sargue.gc.test.TestArticleDAO - record2 = +------+------+
| id| iva|
+------+------+
|{null}|{null}|
+------+------+
12:21:05.671 [main] DEBUG net.sargue.gc.test.TestArticleDAO - record2.value1()={}null
12:21:05.671 [main] DEBUG net.sargue.gc.test.TestArticleDAO - record2.value1()={}null
12:21:05.671 [main] DEBUG net.sargue.gc.test.TestArticleDAO - values = null

所以它似乎忽略设置值(第三个日志输出)并从该方法完全返回 null。不确定这是一个错误还是我做错了什么。

顺便说一下,一项一项地设置值似乎没问题。

record2.value1(1)

这就是我现在正在做的解决方法。

最佳答案

有一个不幸的错误 #5042 ,已在 jOOQ 3.7.3 中修复(并将在 3.6.5 和 3.5.5 中修复)。

values() 方法仅添加到 API 中,而不是添加到实现中,which is empty ;)

如果还无法升级,您仍然可以使用单独的 setter (就像您所做的那样)或不安全的 Record.from()您可以向其传递数组:

// Using from()
record2.from(new Object[] { 1, (byte) 10 });

// Or simpler, using fromArray()
record2.fromArray(1, (byte) 10);

关于java - 如何在 jOOQ 的 MockDataProvider 中使用示例数据创建自定义记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059475/

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