我有一个rspec测试发布到一个动作。在操作中,会定义一个会话变量,但是在我的控制器测试中,会话哈希是空的。如何检查Rspec测试以查看控制器是否将会话变量设置为正确的值?
答案 0 :(得分:18)
您可以直接在rspec中访问会话,如下所示:session[:key]
。只需将其与您想要的值进行比较。
答案 1 :(得分:3)
见this。主要问题是无法从测试代码访问变量session
。要解决此问题,请在spec/spec_helper.rb
:
def session
last_request.env['rack.session']
end
答案 2 :(得分:0)
你在控制器中使用任何before_filter
吗?如果before_filter
改变了流程,那么可能就是这种情况,并且甚至没有评估为会话分配变量的代码。
例如,你的控制器中可能有这一行:
# ...
before_filter :authenticate_user!
# ...
这意味着如果您未登录,则永远不会在此控制器中输入任何方法。因此session
变量将为空。