Wis*_*ter 2 resources nested ruby-on-rails functional-testing nested-resources
我正在做一个简单的测试项目,为我的测试做好准备.我对嵌套资源相当新,在我的例子中我有一个newsitem,每个newsitem都有注释.
路由如下所示:
resources :comments
resources :newsitems do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
我正在为评论设置功能测试,但我遇到了一些问题.
这将获得newsitem的注释索引.@newsitem在setupc中声明.
test "should get index" do
get :index,:newsitem_id => @newsitem
assert_response :success
assert_not_nil assigns(:newsitem)
end
Run Code Online (Sandbox Code Playgroud)
但问题出在这里,在"应该变得新".
test "should get new" do
get new_newsitem_comment_path(@newsitem)
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.
ActionController::RoutingError: No route matches {:controller=>"comments", :action=>"/newsitems/1/comments/new"}
Run Code Online (Sandbox Code Playgroud)
但是当我查看路线表时,我看到了这个:
new_newsitem_comment GET /newsitems/:newsitem_id/comments/new(.:format) {:action=>"new", :controller=>"comments"}
Run Code Online (Sandbox Code Playgroud)
我不能使用名称路径或我在这里做错了什么?
提前致谢.
问题在于您的测试指定URL的方式.错误消息是:
No route matches {:controller=>"comments", :action=>"/newsitems/1/comments/new"}
Run Code Online (Sandbox Code Playgroud)
当然没有名为"/ newsitems/1/comments/new"的行动.你想传递哈希值 { :controller => :comments, :action => :new, :news_item_id => 1 }.
正确的语法很简单:
get :new, :news_item_id => 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |