Rspec如何匹配hash_包括匹配的哈希内容



我正在尝试匹配包含哈希数组的Rspec参数。

expect(myObj).to receive(:new).with(
anything,
anything,
anything,
anything,
hash_including(
hash_obj: filters[:hash_obj]
)

现在这个hash_obj: filters[:hash_obj]具有相同的内容,但是不同的对象。我如何匹配内容?

hash_obj是一个哈希数组,类似于

[
{
a: 1,
b: 2
},
{
a: 3,
b: 4 
}
]

当涉及到内置属性匹配器(或者,更准确地说,是任何适当设计的匹配器,检查"相等"&;正确地),你可以简单地嵌套到你需要的深度,所以史密斯。如... hash_including(hash_obj: include(hash_including(a: 3)))等应该可以工作。

例如,下面的期望是绿色

specify do
h = [
1,
"2",
{
3 => [
{a: 1},
{b: 2},
{c: 3}
]
}
]
expect(h).to include(
hash_including(
3 => include(
hash_including(a: 1)
)
)
)
end

因此,您可以遵循相同的方法,只需将其调整为您真正想要匹配的内容。

有一个严重的权衡需要注意:这种方法在深度不匹配时会导致相当模糊的错误报告。在这种情况下,特别是当您在几个地方有相同的期望时,使用自定义匹配器可能更有意义。

相关内容

  • 没有找到相关文章

最新更新