【发布时间】:2012-09-23 10:29:44
【问题描述】:
我正在尝试编写一个匹配器,它将对象转换为哈希,然后再与预期值进行比较(假设我想比较 2 个哈希而不关心键是字符串或符号的事实)。
我可以很容易地定义一个匹配器来做这个
RSpec::Matchers.define :my_matcher do |content|
match { |to_match| my_hash_conversion(to_match) == my_hash_conversion(content)
diffable
end
我添加了diffable,因此当两个对象不匹配时,rspec 会显示它们的差异。
但是我想显示转换对象的差异而不是原始对象的差异?
我看到它们在 Rspec 的某个地方有一个 Differ 类和一个 diff_with_hash 函数,但我不知道如何使用它(因为它没有真正记录在案)。
【问题讨论】:
-
如果不匹配,您能否在内部块中添加条件以打印出来?至于打印出哈希,它实际上可能不如原始的有用,因为 RSpec 在打印中没有区分 Hash 和 OrderedHash,详见此处stackoverflow.com/questions/4728805/…。