Capybara方法未定义

我不能让水豚工作。 我正在使用capybara 2.0.0

我收到这个错误

Failure/Error: visit "/users/sign_in" NoMethodError: undefined method `visit' for # 

在这个规范上

规格/请求/ forgot_password_spec.rb

 describe "forgot password" do it "redirects user to users firms subdomain" do visit "/users/sign_in" end end 

我没有得到任何错误,它找不到水豚,它包含在spec_helper.rb中

spec_helper.rb

 require 'rubygems' require 'spork' require 'database_cleaner' Spork.prefork do ENV["RAILS_ENV"] ||= 'test' require File.expand_path("../../config/environment", __FILE__) require 'rspec/rails' require 'capybara/rspec' require 'rspec/autorun' require 'factory_girl' Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} RSpec.configure do |config| config.include Devise::TestHelpers, :type => :controller config.extend ControllerMacros, :type => :controller config.include RequestMacros, :type => :request config.mock_with :rspec config.use_transactional_fixtures = false config.before(:suite) do DatabaseCleaner.strategy = :truncation end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end config.infer_base_class_for_anonymous_controllers = false end Spork.each_run do FactoryGirl.reload end end 

有没有人遇到过这个?

如果你有版本>= 2.0 ,那么使用像visit这样的Capybara方法的任何测试应该在spec / features目录下,而不是在spec / requests下 ,它们通常位于Capybara 1.1.2

有关更多信息,请查看以下链接:

  • rspec-rails和capybara 2.0:你需要知道什么
  • rspec-rails gem Capybara页面

如果您不想使用spec / features目录,则应该能够以下列方式将测试标记为feature ,并使Capybara方法有效:

 describe "Some action", type: :feature do before do visit "/users/sign_in" # ... end # ... end 

在我的情况下,我收到此错误,因为我忘了在我的新spec文件的顶部放置require "spec_helper"

我已经做了足够多次,我正在为已经回答的问题添加答案,希望它能帮助其他一些傻瓜(或者很可能是我将来再次搜索这个问题)。