【发布时间】:2012-10-05 17:46:47
【问题描述】:
为什么在 Rails 3 中测试控制器时不能使用路由器路径?
我知道get :new 翻译成{controller: 'sessions', action: 'new'},但为什么signin_path 不能翻译成同样的东西?例如:
# routes.rb
match 'signin', to: 'sessions#new'
# sessions_spec.rb
it "renders the 'new' template" do
get signin_path
response.should render_template :new
end
生产:
No route matches {:controller=>"sessions", :action=>"/signin"}
如果能像在应用程序中那样使用路由语法来测试路由就好了,例如 get signin_path 而不是 { get: 'http://app.com/signin/' }
【问题讨论】:
-
语法应该是
match '/signin', to: 'sessions#new'(你省略了前导/)。 -
@cdesrosiers:不正确。但是,公平地说,您建议的代码也可以使用。
标签: ruby-on-rails ruby rspec routes