如何更改控制器RoR

时间:2015-02-10 06:28:56

标签: ruby-on-rails ruby post routes

我正在为我的简单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

1 个答案:

答案 0 :(得分:0)

控制器测试(也就是来自ActionController :: TestCase的子类)只能测试一个控制器类,并且应该只发出一个请求

如果要跨多个控制器发出多个请求,则应使用集成测试。如果(看起来)你只是想为你的测试创建一些测试数据,那么你可以直接创建数据。看起来它看起来像你正在使用灯具 - 你不需要做一个帖子来第二次创建它们。