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