Я часто хочу сравнить массивы и убедиться, что они содержат одинаковые элементы в любом порядке. Есть ли краткий способ сделать это в 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
Это терпит неудачу, когда элементы массива не реализуют #<=>
eq
совпадения, напримерexpect([1, 2]).to_not eq([2, 1])
to_set
и наsize
самом деле не делает то, что вы хотите. Например, [a, b, b] будет соответствовать [a, a, b]. Ура!