Testing 无法模拟0行导致jOOQ
我用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
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结果集上也存在这些问题