Pergunta

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
Foi útil?

Solução

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top