相关疑难解决方法(0)

无法在Rails 5控制器测试中设置会话哈希

根据Rails Edge指南,所有ActionDispatch :: IntegrationTest HTTP请求都带有可选的命名关键字参数:

get post_url, params: { id: 12 }, session: { user_id: 5 }

大.现在,我在控制器测试中得到以下代码:

test 'should redirect from login page if user is logged in' do
  get '/login', session: { user_id: users(:stephen).id }
  assert_redirected_to root_url, 'Expected redirect to root'
end
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我的测试失败,我看到以下弃用警告:

ActionDispatch::IntegrationTest HTTP request methods will accept only
the following keyword arguments in future Rails versions:
params, headers, env, xhr
Run Code Online (Sandbox Code Playgroud)

所以显然它的rails不允许我传递一个名为session的关键字参数.

此外,在功能测试中设置会话的两种旧方法都不再有效:

test "some thing" do
  session[:user_id] = users(:stephen).id
  # …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-5

8
推荐指数
1
解决办法
2961
查看次数

标签 统计

ruby-on-rails ×1

ruby-on-rails-5 ×1