我需要验证哈希的内容,我惊讶地发现RSpec的contain_exactly
只适用于数组。理想的期望是:
expect(type.values.values).to contain_exactly(
ONE: an_object_having_attributes(value: 'uno'),
TWO: an_object_having_attributes(value: 'dos')
)
基本要求是contain_exactly
要求数组只包含这些元素,并且哈希等价物必须只包含指定的确切键/值对。
有很多解决方法都很好:
include(key: value)
,但这允许其他键,我需要一个完全匹配。expect(hash.keys).to contain_exactly(...)
,但这并不能验证键是否专门链接到值。- 无论如何使用
contain_exactly
(其将散列读取为[key, value]
的元组)并且基于子阵列进行匹配,例如contain_exactly(a_collection_containing_exactly('ONE', an_object_having_attributes(value: 'uno')), ...)
- 使用
aggregate_failures
迭代哈希并基于预期输入将键与值进行匹配。
但我最好奇的是是否有一个内置的RSpec方法来做到这一点。
1条答案
按热度按时间fquxozlt1#
您可以像这样使用
match
匹配器如果其中一个散列有额外的键--测试将失败