在测试rails 3.1时验证模拟用户

时间:2011-07-21 01:17:41

标签: unit-testing authentication integration-testing ruby-on-rails-3.1

我正在尝试测试我的rails 3.1应用程序(我正在学习测试,因为我去)我坚持我如何验证用户,因为通常它设置会话但测试不使用浏览器所以会话是一种未定义的方法。我正在使用新的rails 3.1 has_secure密码。

如何正确设置和测试身份验证,以及测试需要用户进行身份验证的应用部分?

我的设置如下:

rspec 2 水豚 守护 factory_girl

谢谢!

1 个答案:

答案 0 :(得分:0)

当您进行控制器测试时,会话哈希是最后一个参数。假设你在会话控制器测试中有类似的东西:

post :create, :user => { :email => "blah@blah.com" }, :color => "red"

通过2个参数传递给控制器​​:params [:user]和params [:color]。

会话变量怎么样?会话变量作为最后一个参数发送。如果我们想设置last_logged_in会话变量,我们会将上面的内容更改为:

post :create, {:user => { :email => "blah@blah.com" }, :color => "red"}, {:last_logged_in => Time.now}

注意我在用户和颜色参数周围添加的额外设置括号。现在,您将可以访问控制器中的session [:last_logged_in]。

我强烈建议阅读ror指南。这是关于控制器测试的一个: http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers