On 2010-03-20 12:17 PM, David Chelimsky wrote:
2. Setup context in before blocks, not expectations

We want the example names to express the intent of each example.

The before block in the "with valid id' context sets two expectations,
and then each example sets one of its own. If "should_not_assign_to
:message" fails because Message didn't receive :find_by_id, the
failure has nothing to do with the intent expressed by that example.
Same goes for @message.should_receive(:destroy).

If you want those expectations to be part of the spec, then add
examples for them. If you don't care that they are specified, then
don't. Either way, prefer stub() over should_receive() in before
blocks.

I just remembered why I started putting .should_receive in the setup. It was because I use Remarkable and I had the action (post :create, get :new, whatever) in the before block. Here's an example from what I'm working on today:

http://gist.github.com/340458

Before I started using Remarkable, I think I would have put the expectation in an example (I can't remember how much I used should_receive at that point, so I don't know for sure). When I started using Remarkable, I ran into the issue of needing to set the expectation before the action was performed, so I moved it into the setup. I had forgotten that until today when I was merrily moving the expectations back to examples and only having the stub in the setup.

So now my dilemma is to
1) continue doing it the way I have been even though it's not "proper"
2) wrap the Remarkable macros in a context so I can use a before block to execute the action
3) stop using Remarkable
4) some other solution I'm not currently aware of

Funny enough, I'm actually leaning toward #3.

Thoughts?

Peace,
Phillip
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to