Rspec - Check if an array have same elements than other, regardless of the order

pierallard picture pierallard · Apr 10, 2013 · Viewed 10.2k times · Source

I'm not sure if its a Rspec question, but I only encountred this problem on Rspec tests.

I want to check if an array is equal to another array, regardless of the elements order :

[:b, :a, :c] =?= [:a, :b, :c]

My current version :

my_array.length.should == 3
my_array.should include(:a)
my_array.should include(:b)
my_array.should include(:c)

Is there any method on Rspec, ruby or Rails for do something like this :

my_array.should have_same_elements_than([:a, :b, :c])

Regards

Answer

Andy Waite picture Andy Waite · Apr 10, 2013

There is a match_array matcher in RSpec which does this:

http://rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers:match_array