gpt4 book ai didi

ruby-on-rails - Capybara、RSpec 和设计 : any way to make integration tests faster by circumventing slow login and setting session directly?

转载 作者:行者123 更新时间:2023-12-04 13:20:12 29 4
gpt4 key购买 nike

对于几乎每个集成测试,用户都必须登录到 Devise。这需要很多时间,所以我想知道是否有一种方法可以设置用户 session ,而无需访问登录页面、输入详细信息并按下登录按钮。

也许 Devise 中内置了一个帮助方法,可以立即登录给定的用户?

非常感谢您的帮助。

最佳答案

在规范文件的标题中,插入 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已登录。我想这就是您想要的,希望对您有所帮助。您可以在此处查看更多详细信息 Test with capybara .

编辑

为了确保它正常工作,您需要在每次测试后重置守望者,您可以通过调用来执行此操作
Warden.test_reset! 

如果出于某种原因您需要注销已登录的测试用户,您可以使用 Warden 的注销助手。
logout(:user)

关于ruby-on-rails - Capybara、RSpec 和设计 : any way to make integration tests faster by circumventing slow login and setting session directly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13174592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com