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

Eivind Uggedal eivindu at ifi.uio.no
Fri Aug 10 16:04:41 EDT 2007


I asked exactly this question on this list 2 days ago...

See http://pastie.caboo.se/85887 for a working example. One has to
mock out ActiveRecord::Errors::full_messages for it to work under
Rails.

Cheers,
Eivind Uggedal

On 8/9/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> 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
> >
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list