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.
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:
def chain_exp(*expects)
expects.inject {|exps, exp| exps.and(exp)}
end
expect(1).to chain_exp(eq(2), eq(3))
Tweet