On 18 Feb 2010, at 16:25, [email protected] 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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://mattwynne.net
+447974 430184

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to