[rspec-users] Testing a nested controller

Jarkko Laine jarkko at jlaine.net
Fri Sep 14 05:28:33 EDT 2007


On 14.9.2007, at 12.02, Andreas Wolff wrote:

> Hey everyone.
> I really stuck on testing a nested controller. I'm trying to make a
> request using get and afterwards checking the response by
> response.should ...
>
> My routes.rb looks like this:
>
> map.resources :writers do |writers|
>  writers.resources :notes
> end
>
>
> In my notes_controller_spec.rb
>
> def do_get
>  writer_id = 1
>  note_id = 1
>  get note_path(writer_id, note_id)
> end
>
> it "should show a note" do
>  do_get
>  response.should be_success
> end
>
>
> But this always ends in an error message:
> You have a nil object when you didn't expect it!
> The error occurred while evaluating nil.rewrite
>
> Can anybody help here??

You shouldn't test the routing stack in controller tests. Just say

get :show, :id => 1, :writer_id => 1

It will automatically use the correct controller, given that you have  
either used "describe NotesController" or use the controller helper  
to identify the controller. I think the former way is now considered  
best practice.

If you want to test routes, do it separately. IIRC generating an  
rspec_scaffold will create you examples of how to do that.

//jarkko

--
Jarkko Laine
http://jlaine.net
http://dotherightthing.com
http://www.railsecommerce.com
http://odesign.fi


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2417 bytes
Desc: not available
Url : http://rubyforge.org/pipermail/rspec-users/attachments/20070914/46f61372/attachment.bin 


More information about the rspec-users mailing list