如果在控制器操作中设置了会话变量,则Rspec测试

时间:2013-05-01 21:16:20

标签: session testing rspec

我有一个rspec测试发布到一个动作。在操作中,会定义一个会话变量,但是在我的控制器测试中,会话哈希是空的。如何检查Rspec测试以查看控制器是否将会话变量设置为正确的值?

3 个答案:

答案 0 :(得分:18)

您可以直接在rspec中访问会话,如下所示:session[:key]。只需将其与您想要的值进行比较。

答案 1 :(得分:3)

this。主要问题是无法从测试代码访问变量session。要解决此问题,请在spec/spec_helper.rb

添加f行
def session
  last_request.env['rack.session']
end

答案 2 :(得分:0)

你在控制器中使用任何before_filter吗?如果before_filter改变了流程,那么可能就是这种情况,并且甚至没有评估为会话分配变量的代码。

例如,你的控制器中可能有这一行:

# ...
  before_filter :authenticate_user!
# ...

这意味着如果您未登录,则永远不会在此控制器中输入任何方法。因此session变量将为空。