Ruby on rails 3 RubyonRails教程,第11章,练习7-中断我的rspec测试
我正在学习Michael Hartl关于Rails的优秀教程,但在第11章的练习7中遇到了问题 这项工作是: 添加嵌套管线,以便 /users/1/microscops显示所有 用户1的MicroPost。(你也会 必须添加Microposts控制器 索引操作和相应的视图。) 通过将Ruby on rails 3 RubyonRails教程,第11章,练习7-中断我的rspec测试,ruby-on-rails-3,rspec,nested-routes,Ruby On Rails 3,Rspec,Nested Routes,我正在学习Michael Hartl关于Rails的优秀教程,但在第11章的练习7中遇到了问题 这项工作是: 添加嵌套管线,以便 /users/1/microscops显示所有 用户1的MicroPost。(你也会 必须添加Microposts控制器 索引操作和相应的视图。) 通过将routes.rb文件更改为: resources :users do resources :microposts, :only => [:create, :destroy] end 我能够从浏览器中成功
routes.rb
文件更改为:
resources :users do
resources :microposts, :only => [:create, :destroy]
end
我能够从浏览器中成功调用/users/1/microscops。然而,microposts\u controller\u spec.rb中的大多数测试现在都已中断。运行自动测试时,我收到“无路由匹配”错误。例如,第一个测试的内容如下:
it "should deny access to 'create'" do
post :create
response.should redirect_to(signin_path)
end
现在产生以下错误:
1) 微控制器访问
控件应拒绝访问“创建”
失败/错误:post:创建
没有路由匹配{:controller=>“MicroPost”,
:action=>“create”}
当我检查rake路由时
,我发现这个条目:
user_microposts POST /users/:user_id/microposts(.:format) {:action=>"create", :controller=>"microposts"}
这表明这条路线确实存在
在完成本教程时,是否有其他人遇到过此问题?引入嵌套管线后,是否需要在等级库文件中进行更改?Rspec是否适用于嵌套路由
谢谢,因为这是一条嵌套路线,您需要将
用户id
通过:
some_user = way_of_creating_a_user_goes_here
post :create, :user_id => some_user.id
RSpec将尝试在没有此参数的情况下转到
/micropost
路线。谢谢您的回答。我以为我试过了,但显然我做得不太正确-到目前为止,你的解决方案还有效。