我正在为我的简单Ruby on Rails应用程序编写一些测试,发现自己需要将POST方法用于另一个控制器的test.rb文件中的一个控制器。我收到的错误告诉我没有这样的路由,这是因为它试图使用与测试文件有关的控制器。我想为这一次POST调用手动定义一个不同的控制器。
test "Rcomment - Destroy" do
article = articles(:valid)
article.save
comment = comments(:valid)
comment.save
post :create, article_id: article.id, comment: comment.attributes
post :create, article.attributes <--- "Should use article controller not comments controller"
get(:destroy, { 'id' => comment.id, 'article_id' => article.id}, nil)
assert_response :redirect
assert_not_nil assigns(:comment)
end
答案 0 :(得分:0)
控制器测试(也就是来自ActionController :: TestCase的子类)只能测试一个控制器类,并且应该只发出一个请求
如果要跨多个控制器发出多个请求,则应使用集成测试。如果(看起来)你只是想为你的测试创建一些测试数据,那么你可以直接创建数据。看起来它看起来像你正在使用灯具 - 你不需要做一个帖子来第二次创建它们。