Expectations in a RSpec before filter
Last week I found a piece of code which put expectations (for example
should_receive or the likes) in before filters in your spec file. I
believe this is not correct in subtle ways.
- A before filter is meant to define the ‘world’ your RSpec is going
to run in. Not to set expectations. These go into
- Besides that, when putting expectations in a
beforefilter, the expectation is needlessly checked ever
itblock. Imagine the expectation not being met. All of the sudden all your specs turn red. I’d rather see a specific spec fail so I immediately know where to look.
So I’m suggesting to put no expectations in your
before filters and if
you feel the urge to do so it probably needs it’s own
An example of how it should be done:
describe "foo" do before do some_object.stub(:some_method).and_return(:some_value) end it "manipulates the object" do some_object.should_receive(:some_method).with(:some_argument) some_invocation end end