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:in
block (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
应该可用
所以我是 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:in
block (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
应该可用