Ric*_*wis 0 ruby arrays hash rspec
如果我有以下哈希和数组
hash = {'i' => 'i', 'av' => 'av', 'deviceName' => 'Genymotionvbox86p'}
array = ['i', 'av', 'Genymotionvbox86p']
Run Code Online (Sandbox Code Playgroud)
我怎么能比较数组中的每个项目以相同的顺序匹配哈希值
到目前为止我有
array.each do |value|
hash.each do |k, v|
expect(v).to eq(value), "expected #{k} to equal #{v}, instead got #{value}"
end
end
Run Code Online (Sandbox Code Playgroud)
这是失败的,因为我得到
expected av to equal av, instead got i (RSpec::Expectations::ExpectationNotMetError)
Run Code Online (Sandbox Code Playgroud)
我还没到那里,想象循环中的循环不是最好的办法吗?
我想知道如何有效地解决这个问题.
失败的原因是因为您将每个数组值与每个哈希值进行比较.要解决这个问题,您可以利用两个数组数组相等的事实,如果它们的所有值按顺序相等:
expect(array).to eq hash.values
Run Code Online (Sandbox Code Playgroud)