小编典典

Rspec:“array.should == another_array”但不关心顺序

all

我经常想比较数组并确保它们以任何顺序包含相同的元素。在 RSpec 中是否有一种简洁的方法来做到这一点?

以下是不可接受的方法:

#to_set

例如:

expect(array.to_set).to eq another_array.to_set

或者

array.to_set.should == another_array.to_set

当数组包含重复项时,这会失败。

#sort

例如:

expect(array.sort).to eq another_array.sort

或者

array.sort.should == another_array.sort

当数组元素没有实现时,这会失败#<=>


阅读 89

收藏
2022-05-13

共1个答案

小编典典

使用match_array,将另一个数组作为参数,或contain_exactly,将每个元素作为单独的参数,有时对可读性很有用。(文档

例子:

expect([1, 2, 3]).to match_array [3, 2, 1]

或者

expect([1, 2, 3]).to contain_exactly 3, 2, 1
2022-05-13