Testing 无法模拟0行导致jOOQ

Testing 无法模拟0行导致jOOQ,testing,mocking,jooq,Testing,Mocking,Jooq,我用jOOQ(版本3.12.3)模拟空结果时遇到问题。我使用了MockDataProvider,但它仍然返回一行。 以下是MockDataProvider的代码: class DataProvider实现了MockDataProvider{ @凌驾 公共MockResult[]执行(MockExecuteContext ctx){ 返回新的MockResult[]{newmockresult(0,null)}; } } var dbContext=DSL.using(新MockConnectio

我用jOOQ(版本
3.12.3
)模拟空结果时遇到问题。我使用了
MockDataProvider
,但它仍然返回一行。 以下是
MockDataProvider
的代码:

class DataProvider实现了MockDataProvider{
@凌驾
公共MockResult[]执行(MockExecuteContext ctx){
返回新的MockResult[]{newmockresult(0,null)};
}
}
var dbContext=DSL.using(新MockConnection(newdataprovider());
//....
所以它应该返回0行,这就是所需要的。但是,它实际返回1行,其中
0
为值

12:51:34.799 [main] DEBUG org.jooq.tools.LoggerListener - Affected row(s)          : 0
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener - Fetched result           : +--------+
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener -                          : |metadata|
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener -                          : +--------+
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener -                          : |0       |
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener -                          : +--------+
12:51:34.863 [main] DEBUG org.jooq.tools.LoggerListener - Fetched row(s)           : 1

非常感谢您的任何帮助或建议。

您的
MockResult
实例将更新计数编码为
0
,用于DML语句,而不是包含
0
行的结果集。要实现这一目标,您必须创建:

新模拟结果(0,结果)
或者

Mock.of(结果)

//一些模拟DSL上下文配置,与DSL一样简单。使用(sqldial.H2)
DSLContext ctx=。。。
结果结果=ctx.newResult(字段1,字段2);
在很多情况下,即使结果集为空,jOOQ也需要知道结果集的列名和类型。在任何普通的空SQL结果集上也存在这些问题