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-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to