Jer*_*ome 7 java spring-data-jpa junit5
我有一个根据过滤器创建 JPA 规范的构建器。如何测试构建器?assertEquals比较规格时方法总是返回 false...
我已经尝试使用Specification::toPredicate模拟参数调用方法,但返回值是null。我想避免加载entityManager.
Specification<MyClass> nullSpecification = Specification.where(null);
Specification<MyClass> nullSpecification2 = Specification.where(null);
assertEquals(nullSpecification, nullSpecification2);
Run Code Online (Sandbox Code Playgroud)
我期望assertEquals(nullSpecification, nullSpecification2)返回 true,但实际值是 false。如何比较 JPA 规范?
我看到以下选项。
硬着头皮创建一个集成测试,即创建一个EntityManager内存数据库或测试容器并运行查询。
通过传入仔细配置的模拟来检查生成的内部结构Predicate,然后使用 JPA 提供程序的类型检查、反射和内部知识来断言您将获得正确的谓词。
第二种方法的问题是它非常脆弱并且可能会破裂,尽管Specification实际上很好。因此,我会选择选项 1,尽管我也更喜欢单元测试。
| 归档时间: |
|
| 查看次数: |
6311 次 |
| 最近记录: |