Chaining expectations in Rspec
Generally, we think about expectations in RSpec one at a time. If the first expectation fails, then don't go any further. Expectations in RSpec however are chainable, meaning, I can attach one expectation to another for the same subject and then know about the failures or successes for both expections, that looks like this.
``` ruby
expect(1).to eq(2).and eq(3)
```
Which produces output like this:
```
Failure/Error: expect(1).to eq(2).and eq(3)
expected: 2
got: 1
(compared using ==)
...and:
expected: 3
got: 1
(compared using ==)
```
The same result can be got from the below code which may appeal to you a bit more:
``` ruby
def chain_exp(*expects)
expects.inject {|exps, exp| exps.and(exp)}
end
expect(1).to chain_exp(eq(2), eq(3))
```
chriserin
April 13, 2017