Java 如何使用JOOQ模拟聚合函数结果?

Java 如何使用JOOQ模拟聚合函数结果?,java,unit-testing,mocking,jooq,Java,Unit Testing,Mocking,Jooq,我使用JOOQ调用服务类中的count aggregate函数 SelectQuery<Record> query = this.dsl.selectQuery(); query.addSelect(DSL.count()); query.addFrom(SOME_TABLE); final Integer total = query.fetchOne(0, Integer.class); SelectQuery=this.dsl.SelectQuery(); query.addS

我使用JOOQ调用服务类中的count aggregate函数

SelectQuery<Record> query = this.dsl.selectQuery();
query.addSelect(DSL.count());
query.addFrom(SOME_TABLE);
final Integer total = query.fetchOne(0, Integer.class);
SelectQuery=this.dsl.SelectQuery();
query.addSelect(DSL.count());
query.addFrom(一些表);
最终整数总计=query.fetchOne(0,Integer.class);
我需要在单元测试中模拟计数结果。 最好的方法是什么

接下来,我必须创建带有相关字段计数的结果记录。 诸如此类:

Result<Record1<Integer>> result = create.newResult(...);
Result=create.newResult(…);

但是在为聚合函数创建模拟记录时,我必须使用什么作为
create.newResult()
方法参数呢

查询应返回一行一列,因此创建该结果:

Field<Integer> c = DSL.count();
Result<Record1<Integer>> result = create.newResult(c);
result.add(create.newRecord(c).values(42));
字段c=DSL.count();
结果=create.newResult(c);
add(create.newRecord(c).values(42));
您链接的文档显示了一个非常类似的示例:

...
// You decide, whether any given statement returns results, and how many
else if (sql.toUpperCase().startsWith("SELECT")) {

    // Always return one record
    Result<Record2<Integer, String>> result = create.newResult(AUTHOR.ID,AUTHOR.LAST_NAME);
    result.add(create
        .newRecord(AUTHOR.ID, AUTHOR.LAST_NAME)
        .values(1, "Orwell"));
    mock[0] = new MockResult(1, result);
}
...
。。。
//您可以决定是否有任何给定语句返回结果,以及返回多少结果
else if(sql.toUpperCase().startsWith(“选择”)){
//始终返回一条记录
结果=create.newResult(AUTHOR.ID,AUTHOR.LAST_NAME);
结果。添加(创建)
.newRecord(AUTHOR.ID,AUTHOR.LAST_NAME)
.价值(1,“奥威尔”);
mock[0]=新的MockResult(1,result);
}
...