[rspec-users] Can't seem to spec a ActiveRecord::RecordInvalid exception properly...

David Chelimsky dchelimsky at gmail.com
Wed Aug 8 18:10:19 EDT 2007


On 8/8/07, Fischer, Daniel <daniel at danielfischer.com> wrote:
>  1   def create
>  2     @user = User.new(params[:user])
>  3     @user.save!
>  4     self.current_user = @user
>  5     redirect_to user_path(@user)
>  6     flash[:notice] = "Thanks for signing up!"
>  7   rescue ActiveRecord::RecordInvalid
>  8     render :action => 'new'
>  9   end

Try this:

describe "/users/create" do
  before(:each) do
    User.stub!(:new).and_return(@user = mock_model(User))
  end

  it "should redirect to show on successful save" do
    @user.should_receive(:save!)
    post :create
    response.should redirect_to(user_path(@user))
  end

  it "should re-render new on failed save" do
    @user.should_receive(:save!).and_raise(ActiveRecord::RecordInvalid.new(@user))
    post :create
    response.should render_template('new')
  end
end

Cheers,
David

>
> I can't seem to properly spec this out. I am trying numerous things, the
> latest one is this, which makes sense but it still fails...
>
>
>   it "should re-render new on an invalid record exception" do
>     post :create, :user => {:login => nil}
>     response.should render_template(:new)
>   end
>
> should re-render new on an invalid record exception
> expected "new", got nil
>
> Any help would be great, thanks!
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list