对于几乎每个集成测试,用户都必须登录到 Devise。这需要很多时间,所以我想知道是否有一种方法可以设置用户会话,而无需访问登录页面、输入详细信息并按下登录按钮。
也许 Devise 中内置了一个帮助方法,可以立即登录给定的用户?
非常感谢您的帮助。
对于几乎每个集成测试,用户都必须登录到 Devise。这需要很多时间,所以我想知道是否有一种方法可以设置用户会话,而无需访问登录页面、输入详细信息并按下登录按钮。
也许 Devise 中内置了一个帮助方法,可以立即登录给定的用户?
非常感谢您的帮助。
在您的规范文件的标题中,插入include Warden::Test::Helpers
和Warden.test_mode!
,如下所示:
require 'spec_helper'
include Warden::Test::Helpers
Warden.test_mode!
describe "AuthenticationPages" do
let(:user) { FactoryGirl.create(:user) }
before { login_as(user, scope: :user }
...
在上面的代码中,我使用 FactoryGirl 创建一个用户。您可以使用其他您喜欢的方式来创建用户。user
然后我使用方法登录login_as
。然后你可以运行任何测试,你可以肯定user
已经登录了。我想这就是你想要的,希望对你有帮助。您可以在此处查看更多详细信息Test with capybara。
编辑
为了确保它正常工作,您需要在每次测试后重置守望者,您可以通过调用来执行此操作
Warden.test_reset!
如果出于某种原因您需要注销已登录的测试用户,您可以使用 Warden 的注销助手。
logout(:user)