0

我正在尝试编写一个 RSpec 测试来测试传递给请求的错误内容类型,因为在控制器端我只支持 JSON。

所以目前我的 RSpec 是这样写的:

it 'returns a 406 if the request is not for json' do
  request.accept = 'text/html'
  get :show
  expect(response.code).to eq('406')
end

我的控制器中的 show 方法是这样的:

 respond_to :json

 def show

    org_id = Organization.find_by_id(params[:id])

    @organization = Organization.includes([:BunchOfTablesBlah).find(params[:id])

    respond_with(@organization)
end

但是该测试失败并出现以下错误:

1) PopulationManagementController 显示组织返回 406 如果请求不是针对 json 失败/错误:get :show ActionController::RoutingError: No route matches {:controller=>"population_management", :action=>"show"} # 。 /spec/controllers/population_management_controller_spec.rb:184:in `block (3 levels) in '

4

1 回答 1

1
No route matches {:controller=>"population_management", :action=>"show"}

ActionController#show 需要一个 ID,但您没有提供 ID,因此路由失败。

尝试get :show, :id => '1'

于 2013-02-18T17:54:04.470 回答