gpt4 book ai didi

ruby-on-rails - 未定义的局部变量或方法 capybara rspec

转载 作者:行者123 更新时间:2023-12-04 06:35:19 25 4
gpt4 key购买 nike

当我在 before 块之外使用 capybara 方法时,我不断收到这个奇怪的错误:

$ rspec . -e "PasswordResets"
/spec/requests/password_resets_spec.rb:9:in `block (2 levels) in <top (required)>': undefined local variable or method `root_path' for #<Class:0x00000003bfa100> (NameError)
root_path确实存在。我有多个其他有效的测试。但是当方法在 before 中时,我似乎只能使用 Capybara堵塞。这有效:
require 'spec_helper'
describe "PasswordResets" do
subject { page }
describe "it emails user when requesting a password reset" do
before do
visit root_path
end
end
end

这会产生错误:
require 'spec_helper'
describe "PasswordResets" do
subject { page }
describe "it emails user when requesting a password reset" do
visit root_path
end
end

这有效:
require 'spec_helper'
describe "PasswordResets" do
it "emails user when requesting a password reset" do
visit root_path
end
end

我想做的是使用 subject { page }但无需使用 before do end 即可使用 capybara 堵塞。知道我做错了什么吗?

我的 spec_helper.rb文件:
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'

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

RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
end

我在 Rails 3.2 上使用 Capybara 1.1.2,Rspec 2.8.1。

最佳答案

您不能将测试代码直接放在 describe 中.范围不一样。把它放在 beforeit堵塞。

关于ruby-on-rails - 未定义的局部变量或方法 capybara rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9689901/

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