Capybara,RSpec和Devise:通过绕过慢速登录和直接设置会话,可以更快地进行集成测试吗?

对于几乎所有集成测试,用户必须登录到Devise。 这需要花费很多时间,所以我想知道是否有办法设置用户会话而无需访问登录页面,输入详细信息,然后按登录按钮。

也许在Devise中内置了一个辅助方法,可以立即签署一个给定的用户?

非常感谢您的帮助。

在spec文件的标题中,插入include Warden::Test::HelpersWarden.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)