Mockito QueryDSL



我有一个使用queryDSL生成查询的方法。

public List<EntityDAO> getObject() {
QEntity entity = QEntity.entity;
JPAQueryFactory queryFactory = getJPAQueryFactory();
JPAQuery<EntityDAO> query = queryFactory
.select(Projections.bean(EntityDAO.class, 
entity.propertyA,
entity.propertyB.count().as("count")))
.from(entity)
.where(predicateBuilder.build())
.groupBy(entity.propertyA)
.orderBy(order)
.limit(rowCount)
.offset(pageId*rowCount);
return query.fetch();
}

如何使用Mockito测试此方法?

这个方法是数据访问层。对于测试数据层访问代码,最好使用实际的DB实例进行测试,而不是mock,因为最终您仍然需要验证它是否真的可以正确地从实际数据库中获取数据,这是最合适的地方。

你可以用Testcontainers检查。它允许您使用数据库的容器化实例进行测试。启动此DB容器后,只需将一些测试数据加载到相关表中,调用此方法并直接验证返回数据的正确性。