【发布时间】:2017-06-21 09:18:52
【问题描述】:
我创建了一个构建器类来构造Specifications 对象。它用于为JpaSpecificationExecutor 创建查询。使用了构建器,因为我有许多参数可以为空/空(来自用户用于过滤),没有它我不能只使用Specifications:
public class SpecificationBuilder<T> {
private Specifications<T> specification;
public SpecificationBuilder() {
}
public SpecificationBuilder(final Specification<T> spec) {
specification = Specifications.where(spec);
}
public SpecificationBuilder<T> appendOr(final Specification<T> spec) {
specification = Specifications.where(spec).or(specification);
return this;
}
public SpecificationBuilder<T> appendAnd(final Specification<T> spec) {
specification = Specifications.where(spec).and(specification);
return this;
}
public Specification<T> build() {
return Specifications.where(specification);
}
}
我的问题是我不知道如何单独测试它。当然,我可以自动装配真实存储库(在内存数据库上),但我不想为此涉及任何其他类,并且只测试逻辑,即 OR 和 AND 子句的创建方式。
不幸的是,在 Spring API 中我找不到任何有用的方法
【问题讨论】:
-
我不会这样做,我的意思是写一个通用规范,我认为它重写了 JPA 背后的意图。我只会写特定的规范,大多数情况都可以由 Spring JPA 处理。当然只是我个人的看法。
-
我有 10 个参数可以为空/空。我不能写10!单一规格
标签: java spring unit-testing testing spring-data-jpa