Capybara,RSpec和Devise:通过绕过慢速登录和直接设置会话,可以更快地进行集成测试吗?
对于几乎所有集成测试,用户必须登录到Devise。 这需要花费很多时间,所以我想知道是否有办法设置用户会话而无需访问登录页面,输入详细信息,然后按登录按钮。
也许在Devise中内置了一个辅助方法,可以立即签署一个给定的用户?
非常感谢您的帮助。
在spec文件的标题中,插入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来创建用户。 您可以使用其他方式来创建用户。 然后我使用login_as
方法登录user
。 然后你可以运行任何测试,你可以确定user
已经插入。我认为这是你想要的,希望这个帮助。 你可以在这里看到更多细节用水豚测试 。
编辑
为确保此方法正常工作,您需要在每次测试后重置warden,方法是调用
Warden.test_reset!
如果由于某种原因您需要注销已登录的测试用户,则可以使用Warden的注销助手。
logout(:user)