[英]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规范?
我看到以下选项。
硬着头皮,创建一个集成测试,即创建一个EntityManager
并针对内存数据库或Testcontainer运行查询。
通过传入经过仔细配置的模拟来检查生成的Predicate
的内部,然后使用类型检查,反射和JPA提供程序的内部知识来断言您将获得正确的谓词。
第二种方法的问题是它很脆,尽管Specification
实际上还不错,但很可能会破坏。 因此,尽管我也更喜欢单元测试,但我会选择选项1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.