[rspec-users] RSpec and Factory Girl: Destroying an object

Daniel Salmeron Amselem daniel.amselem at gmail.com
Fri May 14 16:11:50 EDT 2010


Hey Pat, thanks for replying.

How would you test this method? Checking the database or mocking? Is
there any advantage of using one over the other ?

I don't really understand the benefits of using mocks, so could you
tell me how would you write the test using both methods (mocking, and
checking the DB? Could you explain me the advantages of using mocking
and advantages of checking de DB?

Thank you very much,

Dani

On May 14, 5:27 pm, Pat Maddox <mailingli... at patmaddox.com> wrote:
> On May 14, 2010, at 8:09 AM, Daniel Salmeron Amselem wrote:
>
>
>
>
>
> > Hi,
>
> > I have a problem when testing the deletion of a record from the
> > database. I am using RSpec methods to check if my account object is
> > being destroyed.
>
> > The factory creates an account object and saves it into the DB. Also
> > the two should_receive expectations seem to work.
>
> > The problem is that when checking the database after the
> > "delete :destroy, :id => account" line, the account record still
> > exists.
>
> >    it "should be able to destroy an account" do
> >      account = Factory(:account)
> >      Account.should_receive(:find).and_return(account)
> >      account.should_receive(:destroy)
>
> >      delete :destroy, :id => account
>
> >      Account.all.should == []
> >      response.should be_success
> >      response.should render_template("new")
> >    end
>
> >  # app/controllers/accounts_controller.rb
> >  def destroy
> >    account = Account.find(params[:id])
> >    account.destroy
>
> >    redirect_to accounts_path
> >  end
>
> > I hope someone can help me on this one.
>
> You've mocked out the call to destroy, which hides the original implementation.  Pick either a state-based test (checking the database, don't use mocks) or mock-based test, but don't mix and match.
>
> Pat
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
>
> --
> You received this message because you are subscribed to the Google Groups "rspec" group.
> To post to this group, send email to rspec at googlegroups.com.
> To unsubscribe from this group, send email to rspec+unsubscribe at googlegroups.com.
> For more options, visit this group athttp://groups.google.com/group/rspec?hl=en.


More information about the rspec-users mailing list