我正在尝试为我的一个控制器编写一个非常基本的功能测试,但问题是它没有识别我的任何路由。它们都可以通过HTTP在应用程序中运行,并且可以在rake路径中看到。
事实上我甚至添加了
puts ActionController::Routing::Routes.inspect
它在错误发生之前就把我所有的路线都放了出来。
以下是测试:
require 'test_helper'
class UsersControllerTest < ActionController::TestCase
test "should get signup" do
get :new
assert_response :success
assert_not_nil assigns(:users)
end
end
错误:
1) Error:
test_should_get_signup(UsersControllerTest):
ActionController::RoutingError: No route matches {:controller=>"users", :action=>"new"}
/test/functional/users_controller_test.rb:5:in `test_should_get_signup'
1 tests, 0 assertions, 0 failures, 1 errors
rake aborted!
Command failed with status (1): [/Users/projectzebra/.rvm/rubies/ruby-1.8.7...]
(See full trace by running task with --trace)
耙路线:
POST /users(.:format) {:controller=>"users", :action=>"create"}
new_user_en_gb GET /users/new(.:format) {:controller=>"users", :action=>"new"}
答案 0 :(得分:3)
尝试为路线本身添加功能测试,看看是否通过,然后从那里开始。
类似的东西:
test "should route to new user" do
assert_routing '/users/new', { :controller => "users", :action => "new" }
end
答案 1 :(得分:0)
这是我的“旅程”宝石中的一个问题。他们在旅程1.0.4中使路线更加严格,这只会出现在“测试”环境中。它有利于“发展”和“生产”。
**确保使用与路径**
中声明的完全相同的参数添加:
get :index, :locale => "en"
或在您的Gemfile更新中:
gem 'journey', '1.0.3'