Je veux souvent comparer les 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:
array.to_set.should == another_array.to_set
Cela échoue lorsque les tableaux contiennent des éléments en double.
#sort
Par exemple:
array.sort.should == another_array.sort
Cela échoue lorsque les éléments de tableaux n’implémentent pas #
Essayez array.should =~ another_array
La meilleure documentation que je puisse trouver est le code lui-même, qui est ici .
Depuis RSpec 2.11, vous pouvez également utiliser match_array
.
array.should match_array(another_array)
Ce qui pourrait être plus lisible dans certains cas.
[1, 2, 3].should =~ [2, 3, 1] # vs [1, 2, 3].should match_array([2, 3, 1])
J’ai trouvé =~
imprévisible et cela a échoué sans raison apparente. Passé 2.14, vous devriez probablement utiliser
expect([1, 2, 3]).to match_array([2, 3, 1])
pas très bien documenté mais j’ai quand même ajouté des liens:
expect(actual).to eq(expected)
expect([1, 2, 3]).to match_array([2, 3, 1])