当你从1.5.1升级到1.6时,测试将通过,但1.6中的相等行为不同。例如
(let [val #{}] (= (set [val]) (set [(fressian/read (fressian/write val))])))
这是因为Fressian 0.2.0将Fressian set重新读取为java.util.HashSet(参见DFRS-5),并且包含空的PersistentHashSet的PersistentHashSet不再等于包含java.util.HashSet的PersistentHashSet。
要捕获这些更改,你需要使用生成测试器,该测试器创建嵌套值(包括集合)。test.check随机深度嵌套值,但还没有集合(TCHECK-51)。
我已经在GitHub上放置了一个示例项目,演示了这一点 https://github.com/danielcompton/data.fressian-test