Rspec Capybara 加载错误(未定义的方法)

Rspec load error with Capybara (Undefined Method)

所以我是 rspec 的新手,我过去曾将 Cucumber 与 Capybara 一起使用,但我正在尝试更多地使用 Capybara 的 ACTUAL rspec 而不是 Cucumber(我有Cucumber 中不需要 BDD 小黄瓜语言)

我现在的文件夹结构是 spec/test_helper 和 spec/features/google_test.rb(现在只是一个示例)

My gemfile has included:
  gem 'capybara'
  gem 'poltergeist'
  gem 'selenium-webdriver'
  gem 'rpsec'

我的 test_helper.rb 文件(在 project/spec 文件夹中)

#test_helper.rb

#Load up Capybara
require 'rspec'
require 'capybara/rspec'

require 'capybara'
require 'capybara/dsl'

#Load up Poltergeist
require 'capybara/poltergeist'

#Set JS Supported Driver
Capybara.javascript_driver = :poltergeist

我的google_test.rb(在spec/features)

require 'test_helper'

Capybara.current_driver = :selenium
Capybara.run_server = false
Capybara.app_host = 'www.google.com'

describe  "Visit Google Home Page", :type => feature do
  it 'Google' do
    visit ('/')
  end
end

运行 rspec spec/features/google_test.rb 我得到:

Failures:

1) Visit Google Home Page Google Failure/Error: visit ('/') NoMethodError: undefined method visit' for #<RSpec::ExampleGroups::VisitGoogleHomePage:0x007f8ef546ad30> # ./spec/features/google_test.rb:9:inblock (2 levels) in '

Finished in 0.00044 seconds (files took 0.47304 seconds to load) 1 example, 1 failure

Failed examples:

rspec ./spec/features/google_test.rb:8 # Visit Google Home Page Google

有什么想法吗?

当您需要 capybara/rspec 时,它会配置 RSpec 以将水豚 DSL 包含到 :feature 类型的测试中。有几种方法可以在 RSpec 测试

上设置类型
describe "xyz", :type => :feature do  # note :feature is a symbol 
  # test goes here
end

feature "xyz" do # alias that automatically sets the type
  # tests go here
end

或者通过配置 RSpec 来设置基于目录名称的类型 - https://www.relishapp.com/rspec/rspec-rails/docs/directory-structure

RSpec.configure do |config|
  config.infer_spec_type_from_file_location!
end

确保您使用了其中一种方法,然后 visit 应该可用