Capybara方法未定义

And*_*tad 2 rspec ruby-on-rails capybara

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

我收到这个错误

Failure/Error: visit "/users/sign_in"
     NoMethodError:
       undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_21:0x007fdda4c6eba0>
Run Code Online (Sandbox Code Playgroud)

在这个规格上

规格/请求/ forgot_password_spec.rb

describe "forgot password" do
  it "redirects user to users firms subdomain" do
    visit "/users/sign_in"  
  end
end
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,它找不到水豚,它包含在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
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个?

Pau*_*nti 6

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

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

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

describe "Some action", type: :feature do
  before do
    visit "/users/sign_in"
    # ...
  end
  # ...
end
Run Code Online (Sandbox Code Playgroud)