2011-06-07 51 views
2

我想为我的一个控制器编写一个非常基本的功能测试,但问题是它不能识别我的任何路由。他们都通过HTTP在应用程序中工作,并可以在耙路中看到。不能识别任何路由的功能测试

事实上我甚至增加

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

什么测试工具是你在用吗?它对我来说没有rspec-ish ...这只是因为我从来没有使用任何超出rspec的任何东西来进行我的单元测试(功能和其他) – jaydel 2011-06-07 13:20:43

+1

也是,完整的跟踪是什么?这可能是真正的错误被整个路由错误的东西掩盖... – jaydel 2011-06-07 13:21:41

+2

它是[测试::单元](http://test-unit.rubyforge.org/),测试框架是标准的一部分Ruby库(Ruby自带)。 – danneu 2011-06-07 15:50:33

回答

3

尝试增加了路由本身的功能测试,看看是否通过,并从那里出发。

喜欢的东西:

test "should route to new user" do 
    assert_routing '/users/new', { :controller => "users", :action => "new" } 
end 
+0

谢谢,第一次使用路线中的区域设置。这是问题所在,我没有通过现场,这个测试抓住了它! – 2011-06-08 09:49:58

+0

太棒了 - 很高兴它的工作。 – jefflunt 2011-06-08 14:10:10

0

这是在我的 “征途” 创业板的问题。他们在旅程1.0.4中提出了更严格的路线,这些路线只在“测试”环境中出现。这对“发展”和“生产”有好处。

**确保您使用完全相同的参数,在路线声明**

要么添加:

get :index, :locale => "en" 

或在您的Gemfile更新:

gem 'journey', '1.0.3'