Question

I have a controller that expects a parameter called controller and the RSpec test I wrote doesn't seem to like the fact that I'm passing in it as a parameter with get.

The spec

require 'spec_helper'

describe PageHelpsController do

  describe 'GET :search' do

    it "returns" do
      get :search, { :controller => 'employer', :action => 'edit', :edition => 'usa', :anchor => 'collaborator' }
      response.status.should be_success
      response.should render_template(:partial => 'shared/page_help')
    end
  end

end

The error

vagrant@debian-squeeze64:/vagrant$ bundle exec rspec spec/controllers/page_helps_controller_spec.rb 
F

Failures:

  1) PageHelpsController GET :search returns
     Failure/Error: Unable to find /vagrant/spec/controllers/page_helps_controller_spec.rb to read failed line
     ActionController::RoutingError:
       No route matches {:controller=>"employer", :action=>"search", :relative_url_root=>nil, :edition=>"usa"}
     # ./spec/controllers/page_helps_controller_spec.rb:11
Était-ce utile?

La solution

I'm going to take a shot at this question assuming you created a parameter named controller.

The problem is you are confusing Rails by creating a parameter called controller. It's assuming there is a controller called Employer which of course doesn't exist. That is why you are receiving the route error. To solve this, you will have to change the parameter named controller to something else.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top