unit-testing - 测试 Rails 3.1 时验证模拟用户

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

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

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

我的设置如下:

rspec 2 capybara guard 工厂女孩

谢谢!

最佳答案

当您进行 Controller 测试时, session 哈希是最后一个参数。假设您在 session Controller 测试中有类似这样的东西:

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

这通过 2 个参数发送到 Controller :params[:user] 和 params[:color]。

session 变量呢? session 变量作为最后一个参数发送。如果我们想设置一个 last_logged_in session 变量,我们会将上面的更改为:

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

请注意我在用户和颜色参数周围放置的额外设置大括号。现在您可以在您的 Controller 中访问 session [:last_logged_in]。

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

关于unit-testing - 测试 Rails 3.1 时验证模拟用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770332/

相关文章:

python - 扭曲的审判 : How to test a MultiService with a client in it -- Reactor was unclean

unit-testing - 重构和测试驱动开发

Python - SSL 客户端/服务器证书

unit-testing - 测试数据密集型遗留应用程序的技巧

c# - 如果我使用 try/catch,为什么我的 C# 异常单元测试会失败?

php - CActiveForm 及其行为没有名为 "getErrors"的方法或闭包。

ios - 如何制作登录流程IOS应用程序

unit-testing - cucumber /Rspec : Is there a way to extract tests from existing code?

php - Zend Framework 调用未定义的方法 Zend\Http\Request::getServer()

文件系统的Java和Junit集成测试