【发布时间】:2021-09-08 22:12:46
【问题描述】:
在我的规范中,我有以下响应结构
something: { foo: [{bar: 'baz'}, {one: 'two'}] }
我尝试比较它,但 foo-array 内部的顺序是随机的。 我找到了这篇文章: link,其中有如下代码:
当你有一个数组但不能确定元素的顺序时使用 a_collection_containing_exactly
expected = { "data" => a_collection_containing_exactly( a_hash_including("id" => "1"), a_hash_including("id" => "2") ) } expect(response.parsed_body).to include(expected)
但这对我不起作用,因为比较将匹配器 a_collection_containing_exactly 视为哈希的一部分
{"base_matcher"=>{"expected"=>[{bar: 'baz'}, {one: 'two'}]}}
我错过了什么?有没有更好的解决方案?
编辑: 为了澄清,这是一个最小的可重现示例
expected_value = { something: { foo: [{ bar: 'baz' }, { one: 'two' }] }}
expect(response.parsed_body).to eq(expected_value)
【问题讨论】:
-
您发布了文章中的代码,但是您的 RSpec 代码是什么样的?你能提供一个minimal reproducible example吗?
-
@J.Krzus :什么是散列数组?您发布的副本包含哈希,但不存在数组。
-
@user1934428 我添加了更多代码以进行澄清。但我已经找到了解决方案。
标签: ruby-on-rails ruby rspec