15

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

4

3 回答 3

21

您可以像这样在 rspec 中直接访问会话:session[:key]. 只需将其与您想要的值进行比较即可。

于 2013-05-02T02:32:19.207 回答
4

看到这个session主要问题是无法从测试代码访问该变量。要解决它,请在以下位置添加 fowling 行spec/spec_helper.rb

def session
  last_request.env['rack.session']
end
于 2016-01-06T13:30:51.513 回答
0

before_filter在你的控制器中使用任何东西吗?如果before_filter更改流程并且您的将变量分配给会话的代码甚至尚未评估,则可能是这种情况。

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

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

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

于 2013-07-19T14:54:34.233 回答