测试时未找到Rails自定义路由,但适用于卷曲

时间:2012-12-06 23:05:05

标签: ruby-on-rails unit-testing rails-routing testunit

在config / routes.rb中:

match 'app_config/:version' => "application#appconfig"

测试/功能/ application_controller_test.rb:

require 'test_helper'
class ApplicationControllerTest < ActionController::TestCase
  test "app config" do
    get "/app_config/v2"
    assert_response :success
  end
end

rake test

  1) Error:
test_app_config(ApplicationControllerTest):
ActionController::RoutingError: No route matches {:controller=>"application", :action=>"/app_config/v2"}

$ curl localhost:3000/app_config/v2有效,并返回我期望的响应,rake routes按预期显示路由。知道发生了什么,或者如何进一步调查?这基本上是项目中唯一的代码。

1 个答案:

答案 0 :(得分:1)

get方法不采用路线。它需要一个动作名称和一个参数的哈希。

如果要测试操作,测试应该如下所示:

test "for success" do
  get :appconfig, :version => "v2"
  assert_response :success
end

如果您想测试路由,则会有tutorial here in the documentation

test "should route to appconfig" do
  assert_routing '/app_config/v2', { :controller => "application", :action => "appconfig", :version => "v2" }
end