rails test仅在get请求中传递CSRF令牌

Don*_*lio 4 testing unit-testing ruby-on-rails csrf devise

我正在尝试对我的控制器进行单元测试,每个使用该get请求的测试都能正常工作,但我使用其他调用的测试(delete在destroy中,post在create和put更新中)都失败了:

WARNING: Can't verify CSRF token authenticity
Completed 401 Unauthorized in 2.5ms
Run Code Online (Sandbox Code Playgroud)

例如,这是对破坏的测试:

  test "should destroy blog" do
    assert_difference('Blog.count', -1) do
      delete :destroy, id: @blog
    end

    assert_redirected_to blogs_path
  end
Run Code Online (Sandbox Code Playgroud)

这不起作用

这是show的测试,它起作用:

  test "should show blog" do
    get :show, id: @blog
    assert_response :success
  end
Run Code Online (Sandbox Code Playgroud)

在破坏测试中,设计authenticate_user!只是将我重定向到sign_in页面,测试失败.

Don*_*lio 6

显然,在测试环境中禁用CSRF令牌是正常的,我补充说:

  # Disable request forgery protection in test environment
  config.action_controller.allow_forgery_protection    = false
Run Code Online (Sandbox Code Playgroud)

到我的"/config/environments/test.rb"文件,当前用户能够通过.