水豚,RSpec的和设计:任何方式绕开缓慢登录并直接设置会话进行集成测试速度更快?(Capybara

2019-07-03 12:23发布

对于几乎所有的集成测试,用户必须先登录设计。 这需要大量的时间,所以我想知道是否有建立用户会话,而无需访问登录页面,输入详细信息,并按下登录按钮的方式。

也许有内置设计一个辅助方法是立即签署一个给定的用户?

非常感谢帮助。

Answer 1:

在您的规范文件的文件头,插入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创建一个用户。 你可以用你喜欢创建用户的其他方式。 然后我登录user通过使用方法login_as 。 然后你可以运行任何测试,您可以确保user在已loged。我想这是你想要的,希望这帮助。 你可以在这里看到更多的细节测试与水豚 。

编辑

为了确保这一工作正常,您将需要每次测试后重置典狱长可以通过调用做到这一点

Warden.test_reset! 

如果由于某种原因需要注销测试用户登录后,就可使用守望者注销帮手。

logout(:user)


文章来源: Capybara, RSpec and Devise: any way to make integration tests faster by circumventing slow login and setting session directly?