Thanks, first, to everyone who's asked and answered questions on this list, and to the creators of RSpec - it is all very helpful. I've searched the mailing list, and had a couple 2hr googling sessions that didn't help me find an answer.
I've run into a problem getting my first non-trivial view spec to run. I get an error when trying to generate a link_to() to another resource. Here is an overview of the situation, then the code: - I'm using a restful design - I'm using nested (multiply nested) resources - I am trying to test a show.rhtml view, that includes links (link_to) to resources managed by another controller - The use_case model has a many-to-may through relationship with actors, and I'm displaying links to the associated actors on the use_case page - I can't get the links to generate when running rspec (but it works great in the app) - I am in the early stages of the project, and want to move forward BDD, but I have some existing code that I need to test before I can start moving forward again. My theories: I need to stub the controller (for the other resource), or I need to stub something else. Here's the command I'm running to drive RSpec ruby script/spec -f s spec/views Here's the error that I get 1) ActionView::TemplateError in 'UseCase showing a use case should display the use case identifier' actor_url failed to generate from {:customer_id=>"1", :controller=>"actors", :action=>"show", :project_id=>"1"}, expecte d: {:controller=>"actors", :action=>"show"}, diff: {:customer_id=>"1", :project_id=>"1"} On line #22 of app/views/use_cases/show.rhtml 19: <ul> 20: <% @primary_actors.each do |a| %> 21: <li> 22: <%= link_to(a.name,actor_path(@customer,@project),{:class=>"show",:title=>"Show actor details"}) -%> 23: <%= link_to("Remove assignment",participation_path(@customer,@project,@use_case.participations.find_by _actor_id(a)),{:class=>"delete",:title=>"Remove the assignment of this actor to this use case", :confirm => 'Are you sur e you want to remove this assignment?', :method => :delete})-%> 24: </li> 25: <% end %> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in `raise_named_route_error' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in `generate' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in `rewrite_path' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in `rewrite' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in `url_for' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in `url_for' (eval):19:in `actor_path' #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in `_run_rhtml_47app47views47use_cases47show46rhtml' #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in `_run_rhtml_47app47views47use_cases47show46rhtml' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in `compile_and_render_template' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in `render_template' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in `render_file' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in `render_file' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in `render_with_no_layout' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in `render_without_benchmark' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in `render' c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure' #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in `render' C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in `render' spec/views/use_cases/show_view_spec.rb:40 C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in `proc' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in `proc' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in `before_example' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in `run' c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in `run' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in `run' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in `run' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in `run_behaviours' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in `run_behaviours' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in `run' C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in `run' script/spec:4 Here's part of my routes.rb, showing the nested resources map.resources :customers do |customers| customers.resources :projects do |projects| projects.resources :actors projects.resources :use_cases Here's some of the stubbing that I am using to set up the spec @customer = mock_model(Customer, :id => 1, :to_param => "1" ) @project = mock_model(Project, :id => 1, :customer_id => 1, :to_param => "1" ) I've also stubbed objects to create the following :assigns assigns[:customer] = @customer assigns[:project] = @project assigns[:use_case] = @use_case assigns[:primary_actors] = @primary_actors I suspect that there is something else that needs to be stubbed - actors controller, maybe? I really don't know. If anyone can point me in the right direction, or tell me where in the error message to dig deeper, that would be awesome. If I left out any important information, please let me know! And a huge thanks in advance to anyone who can help me out, or explain why this isn't supported, or point me towards any docs or articles that address this issue (because I will have it a zillion times, as almost all views in my app display content and links from more than one model). Scott -- Scott Sehlhorst, President Tyner Blain LLC http://tynerblain.com/blog http://tynerblain.com/nexus
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users