我是新来测试,并且在尝试运行功能测试时遇到一些困难。Rails功能测试,路由错误
我在这里有一个messages_controller和一个user_controller。 在路由中,我定义了用户资源has_many的消息资源。
现在,我想在消息控制器运行一个简单的测试:
def test_index
get :index, { :user_id => 1 }
assert_template 'index'
end
却得到了一个路由错误的轨道,他无法找到的消息的路由。我不想仅仅因为测试而给消息添加路由。我如何告诉测试他必须从/ users/messages url访问?
完整的routes.rb:
ActionController::Routing::Routes.draw do |map|
map.login 'login', :controller => :user_sessions, :action => :new
map.logout 'logout', :controller => :user_sessions, :action => :destroy
map.signin 'signin', :controller => :users, :action => :new
map.connect 'search/:action/:word', :controller => :search
map.connect 'search/:word', :controller => :search, :action => :index
map.resources :forums do |forums|
forums.resources :forum_posts, :collection => {:preview => :post }, :as => :posts do |post|
post.resources :forum_posts, :as => :reply
post.resources :reports
end
end
map.resources :newsitems, :as => :news do |news|
news.resources :comments do |comment|
comment.resources :reports
end
end
map.resource :user_sessions
map.resources :users,
:as => :profiles,
:controller => :profiles,
:has_many => [ :messages ]
map.resource :profiles
map.resource :me,
:controller => :me,
:has_many => [ :messages ]
map.resources :comments, :has_many => [ :reports ]
map.resources :forum_posts, :has_many => [ :reports ]
map.resources :reports
map.home '/', :controller => :home
map.root :controller => :home
map.namespace :admin do |admin|
admin.namespace :forum do |forum|
forum.resources :categories
forum.resources :posts
forum.resources :forums
forum.root :controller => :home
end
admin.resources :notices
admin.resources :users
admin.workflow 'workflow/:action', :controller => :workflow
admin.resources :newsitems
admin.resources :reports
admin.resources :comments
admin.root :controller => :home
end
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
UPDATE
我注意到,每一个功能测试得到的路由错误。即使是像Newsitem这样的简化版本。我不知道为什么。
这是我的用户/消息规则: map.resources:用户, :为=>:型材, :控制器=>:型材, :的has_many => [ :消息] 它应该仍然工作?因为它不是 – Tiago 2010-01-28 15:25:57
感谢您的更新,我更新了我的答案以反映。 – 2010-01-28 17:10:06
感谢您的帮助!我添加了完整的routes.rb。是否有可能与消息发生路由冲突?因为用户和我的控制器有它吗? – Tiago 2010-01-28 17:43:16