gpt4 book ai didi

ruby - Rspec 和 Capybara 未初始化常量

转载 作者:行者123 更新时间:2023-11-28 21:29:09 25 4
gpt4 key购买 nike

我在非 RoR 项目中使用 Rspec 3.2 和 Capybara 2.4。我正在尝试使用 Capybara gem 提供的功能模式进行测试。

$ cat .rspec                                                                                    
--color
--require spec_helper

$ cat spec/features/test_spec.rb
feature 'login' do
username ="rspec#{Time.now.to_i}"
valid_email = "#{username}@gmail.com"

scenario 'with valid email' do
sign_up_with valid_email, 'pwd', 'pwd', username
expect(page).to have_content('LOGOUT')
end
end

$ cat spec/support/session_helper.rb
module SessionHelper
def sign_up_with(email, password, confirm_password, username)
visit '/signup'
fill_in 'email', with: email
fill_in 'password', with: password
fill_in 'passconf', with: confirm_password
fill_in 'username', with: username
click_button 'submit'
end
end

$ cat spec/spec_helper.rb
require 'capybara/rspec'
Capybara.default_driver = :selenium
RSpec.configure do |config|
...
config.include SessionHelper, type: :feature
...
end

这是一个非 RoR 项目,当我运行测试时出现以下错误:

$ rspec                                                                                         
spec/spec_helper.rb:26:in `block in <top (required)>': uninitialized constant SessionHelper (NameError)

在线文档中有很多示例,我按照示例的方式构建了我的文件,但它不起作用。

最佳答案

我在我的所有项目中处理这个问题的方式是这样的:

需要所有支持文件:

spec_helper.rb

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

然后您的 spec/support/session_helper.rb 应该如下所示:

module SessionHelper
def sign_up_with(email, password, confirm_password, username)
visit '/signup'
fill_in 'email', with: email
fill_in 'password', with: password
fill_in 'passconf', with: confirm_password
fill_in 'username', with: username
click_button 'submit'
end
end

RSpec.configure do |config|
# Remove the equivalent line from spec_helper.rb
config.include(SessionHelper)
end

关于ruby - Rspec 和 Capybara 未初始化常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29540546/

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