Yeah, I was on 1.1.4 and this solution with a few tweaks definitely worked.
The original set up of my code called for having the Organization returned
by the notes controller in a before filter, so I stubbed out this stuff in
the before(:each) block. It ended up looking like this:
before(:each) do
@organization = stub_model(Organization, :name => "Slappy's Hot Dog
Palace")
Organization.stub!(:find).and_return(@organization)
end
Then, I followed Craig's lead on what the example should do with a few
things taken out:
it "should render 'notes/new' when an empty note is submitted" do
Note.stub!(:new).and_return(stub("note"))
post :create, :appointment_id => @appointment.id, :organization_id => @
organization.id, :new_note => { :body => "" }
response.should render_template("notes/new")
end
I kept the controller method just like it was in the original post. And
whoooo! Everything passed. I'll be making sure I really differentiate the
necessity of mock_model vs. stub_model from now on, too as a take-away from
all this. Learning this stuff has really been interesting considering
months ago the only testing I was doing was making changes in Textmate and
then clicking "Refresh" in a browser. lol.
Thanks again!
Tiffani AB
On Mon, Jul 7, 2008 at 10:31 PM, Craig Demyanovich <[EMAIL PROTECTED]>
wrote:
> I'm assuming RSpec 1.1.3+, but here's how I might write this example:
>
> describe NotesController do
> it "renders 'notes/new' when an empty note is submitted" do
> Note.stub!(:new).and_return(stub("note"))
> organization = stub_model(Organization, :notes => stub("notes",
> :<< => false))
> assigns[:organization] = organization
>
> post :create, "organization_id" => organization.to_param,
> "new_note" => { "body" => "" }
>
> response.should render_template("notes/new")
> end
> end
>
> I'm favoring the use of stub_model and stubs instead of mock_model
> (and mocks) because we're not setting any expectations on the note or
> the organization. Rather, we're just setting them up to deliver values
> that are either simply required (as in Note.new returning something
> non-nil) or what we want (the addition of the note to the organization
> to fail).
>
> I've also eliminated the idea of having existing notes on the
> organization. It's not central to what's being spec'd, so it's out.
>
> Furthermore, I made the submitted note's body empty because that's
> what was in the original description of the it block. That those two
> didn't match bothered me.
>
> Finally, I simplified the description of the it block to what I
> thought the essence of your example was; I hope that I'm at least
> close. :-)
>
> Please let the list know if this helped or if you already revisited
> the problem and solved it. I think we're interested in what ends up
> working for you.
>
> Regards,
> Craig
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users