Rails 4:在命名空间控制器上测试GET请求

时间:2013-07-05 05:20:37

标签: ruby-on-rails

我有一个失败的测试,我很难理解。我在app / controllers / users / queries_controller.rb上有一个控制器class Users::QueriesController < ApplicationController,它有一个show动作和一个相应的命名空间路径:

namespace :users do
  resources :queries
end

我还在test / controllers / users / queries_controller_test.rb进行了测试:

require 'test_helper'

class Users::QueriesControllerTest < ActionController::TestCase

  test "accessing :show action" do
    get :show
    assert_response :success
  end

end

运行此测试会产生ActionController::UrlGenerationError: No route matches {:controller=>"users/queries", :action=>"show"}

正在运行rake routes包含以下行:users_query GET /users/queries/:id(.:format) users/queries#show

这里出了什么问题?我正在使用Rails 4.0.0。

1 个答案:

答案 0 :(得分:8)

我认为你需要为show动作提供一个id

  test "accessing :show action" do
    get :show, {:id => 1}
    assert_response :success
  end

这是在rails 4之前的正确方法。

请试一试,让我知道结果。