Java 如何使用JOOQ模拟聚合函数结果?
我使用JOOQ调用服务类中的count aggregate函数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
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);
}
...