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


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

Reply via email to