我使用JOOQ在服务类中调用count聚合函数。
SelectQuery<Record> query = this.dsl.selectQuery();
query.addSelect(DSL.count());
query.addFrom(SOME_TABLE);
final Integer total = query.fetchOne(0, Integer.class);
我需要模拟单元测试中的计数结果。做这件事的最好方法是什么?
在jooq文件之后,我必须创建包含相关字段计数的结果记录。就像这样:
Result<Record1<Integer>> result = create.newResult(...);
但是,在为聚合函数创建模拟记录时,我必须使用什么作为create.newResult()
方法参数呢?
发布于 2018-05-11 00:57:44
您的查询应该返回一行和一列,因此创建结果:
Field<Integer> c = DSL.count();
Result<Record1<Integer>> result = create.newResult(c);
result.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);
}
...
https://stackoverflow.com/questions/50269936
复制相似问题