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