繁体   English   中英

如何测试JPA规范

[英]How to test JPA Specification

我有一个根据过滤器创建JPA规范的构建器。 我如何测试建造者? 比较规格时assertEquals方法始终返回false。

我已经尝试用模拟参数调用Specification::toPredicate方法,但是返回的值为null 我想避免加载entityManager

Specification<MyClass> nullSpecification = Specification.where(null);
Specification<MyClass> nullSpecification2 = Specification.where(null);
assertEquals(nullSpecification, nullSpecification2);

我期望assertEquals(nullSpecification, nullSpecification2)返回true,但实际值为false。 如何比较JPA规范?

我看到以下选项。

  1. 硬着头皮,创建一个集成测试,即创建一个EntityManager并针对内存数据库或Testcontainer运行查询。

  2. 通过传入经过仔细配置的模拟来检查生成的Predicate的内部,然后使用类型检查,反射和JPA提供程序的内部知识来断言您将获得正确的谓词。

第二种方法的问题是它很脆,尽管Specification实际上还不错,但很可能会破坏。 因此,尽管我也更喜欢单元测试,但我会选择选项1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM