会议哈希按照Rails Edge Guide所有ActionDispatch :: IntegrationTest HTTP请求的随意命名关键字参数:无法设置在导轨5控制器测试
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
当我运行它,我的测试失败,我看到下面的弃用警告:
ActionDispatch::IntegrationTest HTTP request methods will accept only
the following keyword arguments in future Rails versions:
params, headers, env, xhr
所以,很显然这是rails不让我传递一个名为会话的关键字参数。
此外,两者在功能测试设置会话的老办法不再工作,要么:
test "some thing" do
session[:user_id] = users(:stephen).id
# etc
end
NoMethodError: undefined method `session' for nil:NilClass
而这也失败:
test "some thing" do
get '/login', nil, nil, { user_id: users(:stephen).id }
# etc
end
会话哈希只是忽略了,关于rails的弃用警告只出现了4个不同的命名参数。
是否有其他人对Rails 5.rc1有这种麻烦?
根据示例'得到POST_URL,则params:{ID:12},会话:{USER_ID:5}'第二个参数是* params *,'get'/ login',session:{user_id:users(:stephen).id}'但是你通过* session *,你尝试了'get'/ login',params:{} user_id:users(:stephen).id}'? –
@Зелёный参数都是完全可选的,顺序不重要,是的,我确实尝试了你的想法,但它没有解决问题 – stephenmurdoch
这很奇怪,因为在我的测试中顺利运行 –