Je souhaite souvent comparer des tableaux et m'assurer qu'ils contiennent les mêmes éléments, dans n'importe quel ordre. Existe-t-il un moyen concis de le faire dans RSpec ?
Voici des méthodes qui ne sont pas acceptables :
#to_set
Par exemple :
expect(array.to_set).to eq another_array.to_set
ou
array.to_set.should == another_array.to_set
Cela échoue lorsque les tableaux contiennent des éléments en double.
#sort
Par exemple :
expect(array.sort).to eq another_array.sort
ou
array.sort.should == another_array.sort
Cela échoue lorsque les éléments du tableau n'implémentent pas l'option #<=>
7 votes
Je ne veux pas faire le malin, mais en comparant
to_set
ysize
ne fait pas ce que vous voulez. Par exemple, [a, b, b] correspondrait à [a, a, b]. À la vôtre !4 votes
Pour ceux qui sont tombés ici en se demandant le contraire : l'ordre devrait être le même . Utilisez le
eq
matcher, par exempleexpect([1, 2]).to_not eq([2, 1])