On Mon, Jul 7, 2008 at 5:55 PM, Britt Mileshosky <[EMAIL PROTECTED]> wrote:
> > > ________________________________ > > Date: Mon, 7 Jul 2008 17:27:36 -0400 > > From: [EMAIL PROTECTED] > > To: [email protected] > > Subject: [rspec-users] Not sure why this controller spec isn't working > > > > Hey folks, > > > > I've been mocking and stubbing pretty nicely after the various bits of > advice I received earlier about doing so. I've come to bits of code that > work in one place and not in another, though. I'm hoping it's not something > simple I've missed. The code below fails even though code that is > practically the same elsewhere (except different models in use) passes. > What gives? > > > > I have: > > > > in notes_controller_spec.rb: > > > > > > before(:each) do > > @mock_note = mock_model(Note, :body => "The hot dog shipment will be > in later tonight.", > > :organization => @mock_org) > > @mock_org = mock_model(Organization, :name => "Slappy's Hot Dog > Palace", :notes => [EMAIL PROTECTED]) > > > > @notes = [EMAIL PROTECTED] > > end > > > > > > it "should render 'notes/new' when the Note is setup with invalid data, > i.e. without a body on POST create" do > > Note.stub!(:new).and_return(@mock_note) > > @notes.stub!(:< post :create, :organization_id => @ > mock_org.id, :new_note => { :body => @mock_note.body } > > response.should render_template("notes/new") > > end > > > To add to what Britt already said, look at your example and then your before block again very carefully. Notice that you setup @notes in your before, and you use it to stub :<< in your example, but you never return @notes from anything. Instead you setup @mock_org to return an array with @mock_note. Although the contents of this and @notes are the same, you have created two different arrays. You are probably wanting to be dealing with the same @notes object in each of these cases. Zach -- Zach Dennis http://www.continuousthinking.com
_______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
