我使用像这样的minitest实现集成测试
test "should get index" do
get admin_product_url, params: {}, session: { user_id: @admin_user.id }
assert_response :success
end
但是我收到此错误消息
ArgumentError: unknown keyword: session
我还能如何设置会话信息?
我正在使用ruby 2.4和rails 5.0.2
答案 0 :(得分:1)
在Rails 5中,不再可能在控制器测试中访问会话。 Integration tests doesn't allow you to set session.
<子> Ref
子>
答案 1 :(得分:1)
集成测试近似于浏览会话,因此您发出的请求只能使用传递参数,标题等。从这个角度来看,session
访问器只有在您创建初始化后才可用请求,你不能传递这样的会话变量哈希。理想情况下,您应该测试更复杂的交互,而不仅仅是单个请求,并且您应该对控制器逻辑设置的会话值进行断言。但你可以像这样构建上面的测试:
test "should get index" do
get admin_product_url # first request initializes session
session[:user_id] = @admin_user.id # can now update session state
get admin_product_url # subsequent request
assert_response :success # assertions follow
end
答案 2 :(得分:0)
这应该有效:
test "should get index" do
session[:user_id] = @admin_user.id
get admin_product_url, params: {}
assert_response :success
end