我有两个哈希数组。实际数组是我通过测试获得的数组,我希望数组存储在文件中的某个地方,以便与实际数组进行比较。
-
实际阵列
[ {:var1=>nil, :action=>"open", :Run=>"App", :Id=>"A123-B456-C789"}, {:var1=>nil, :Id=>"P987-Q654-R321"} ]
-
预期的数组
[ {:var1=>nil, :action=>"open", :Run=>"App", :Id=>"A123-B456-C789"}, {:var1=>nil, :Id=>"P987-Q654-R321"} ]
目前,我正在使用Rspec::Matcher match_array进行比较,并且运行良好:
expect(actual).to match_array(expected)
问题:
每个哈希中实际数组中的 id 是动态的。所以,我无法将其与预期值进行比较。在这里,我想比较它是否不是 nil 或使用一些正则表达式检查模式。像这样:
{:var1=>nil, :Id=> !nil or /some-regex/}
不确定它是否适用于 Rspec 匹配器,或者我需要更改匹配器库?
提前感谢!
使用双精度:
let(:id_double) { double('id') }
let(:expected) do
[
{ var1: nil, action: 'open', Run: 'App', Id: id_double },
{ var1: nil, Id: id_double }
]
end
before do
allow(id_double).to receive(:==) do |other_id|
other_id =~ /^[A-Z]d{3}-[A-Z]d{3}-[A-Z]d{3}$/
end
end
it 'works' do
actual = # ...
expect(actual).to match_array(expected)
end