Hmmm...I made the changes that both you and Britt suggested and still no dice. I broke it down and put print statements (yeesh) in the controller around the @organization.notes << @new_note statement. This confirms that the statement returns false just like the stub told it to do (so I took out the puts statement and ran the test again), but for some reason I still don't get the rendered template as set up in the else clause. I'm not sure what's going on, but I suppose I'll just skip that test until later.
Thanks for the help! Tiffani AB On Mon, Jul 7, 2008 at 6:06 PM, Zach Dennis <[EMAIL PROTECTED]> wrote: > > 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: rspec-users@rubyforge.org >> > 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 > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users