[rspec-users] Question About Cleaning Up Specs?

Matt Wynne matt at mattwynne.net
Thu Feb 18 11:45:45 EST 2010


On 18 Feb 2010, at 16:25, me at franklakatos.com wrote:

> I know we are suppose to keep specs obvious and readable, but is it  
> normal (or there any opposition) to stubbing every method call that  
> you needed in a before block and simply over-riding the same method  
> with a should_receive in the actual tested it()?
>
> Example
>
> describe "#create" do
>  it "should find a user"
>    @user = mock_model(User)
>    User.should_receive(:find).and_return @user
>    @posts = []
>    @post = mock_model(Post)
>    @posts.stub(:build).and_return @post
>    post "create"
>  end
>
>  it "should build a post from that user" do
>    @user = mock_model(User)
>    User.stub(:find).and_return @user
>    @posts = []
>    @post = mock_model(Post)
>    @posts.should_receive(:build).and_return @post
>    post "create"
>  end
> end
>
> ... would become ..
>
>
> describe "#create" do
>  before do
>    @user = mock_model(User)
>    User.stub(:find).and_return @user
>    @posts = []
>    @post = mock_model(Post)
>    @posts.stub(:build).and_return @post
>  end
>
>  it "should find a user"
>    User.should_receive(:find).and_return @user
>    post "create"
>  end
>
>  it "should build a post from that user" do
>    @posts.should_receive(:build).and_return @post
>    post "create"
>  end
> end
>
> Note that I stubbed both method calls in the before, but only  
> should_require'd them in the appropriate it()?
>
> Let me know if that's good practice

That's exactly what I do.

>
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://mattwynne.net
+447974 430184



More information about the rspec-users mailing list