【发布时间】:2010-11-27 17:20:23
【问题描述】:
我想编写一个 Rails 集成测试(使用 ActionDispatch::IntegrationTest)。我正在使用设计进行身份验证,并使用机械师进行测试模型。我无法成功登录。
这是一个简单的例子:
class UserFlowsTest < ActionDispatch::IntegrationTest
setup do
User.make
end
test "sign in to the site"
# sign in
post_via_redirect 'users/sign_in', :email => 'foo@bar.com', :password => 'qwerty'
p flash
p User.all
end
这是调试输出:
Loaded suite test/integration/user_flows_test
Started
{:alert=>"Invalid email or password."}
[#<User id: 980190962, email: "", encrypted_password: "", password_salt: "", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2010-11-27 16:44:10", updated_at: "2010-11-27 16:44:10">, #<User id: 980190963, email: "foo@bar.com", encrypted_password: "$2a$10$vYSpjIfAd.Irl6eFvhJL0uAwp4qniv5gVl4O.Hnw/BUR...", password_salt: "$2a$10$vYSpjIfAd.Irl6eFvhJL0u", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2010-11-27 17:09:13", updated_at: "2010-11-27 17:09:13">]
"/unauthenticated"
F
这是我的蓝图.rb:
require 'machinist/active_record'
require 'sham'
User.blueprint do
email {"foo@bar.com"}
password {"qwerty"}
end
【问题讨论】:
-
我最近开始阅读 Rails 测试处方 (pragprog.com/titles/nrtest/rails-test-prescriptions)。在本书的早期,Noel 提到他将使用 Devise 进行身份验证。我跳到 github.com 查看他的示例应用程序 (github.com/noelrappin/huddle),看看他是否解决了这个问题。虽然他没有任何集成测试,但我将其发布在这里以供参考。
-
我还切换(返回)到使用 AuthLogic (github.com/binarylogic/authlogic) 在我的应用程序中进行身份验证。我以前用过它,而且比 Devise 更喜欢它。
标签: ruby-on-rails integration-testing devise machinist