1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-07 17:18:02 +00:00

Add Assert Two Arrays Have The Same Items With RSpec as a rails til

This commit is contained in:
jbranchaud
2019-12-04 17:28:18 -06:00
parent c1db2af2d0
commit 26db4c5c07
2 changed files with 27 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
# Assert Two Arrays Have The Same Items With RSpec
Methods that return arrays of values with inconsistent orderings can be
annoying to test with the `#eq` matcher. To keep your test from fickering,
you'd have to ensure the comparison is the same every time.
```ruby
it "has the correct values" do
expect(fetch_colors(params).sort).to eq(["blue", "green", "yellow"])
end
```
It'd be better if we could keep our test focused and simple. If sort order
isn't something we care about, then it shouldn't be part of our test. RSpec has
a matcher for this kind of scenario --
[`#match_array`](https://www.rubydoc.info/github/rspec/rspec-expectations/RSpec%2FMatchers:match_array).
```ruby
it "has the correct values" do
expect(fetch_colors(params)).to match_array(["blue", "green", "yellow"])
end
```
This allows us to ensure that each side of the comparison has the same set
values, irrespective of ordering.