我不能让水豚工作。我正在使用capybara 2.0.0
我收到此错误
Failure/Error: visit "/users/sign_in"
NoMethodError:
undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_21:0x007fdda4c6eba0>
关于此规范
规格/请求/ 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
还有其他人遇到过这个吗?
答案 0 :(得分:6)
如果您有版本>= 2.0
,那么使用Capybara方法(如visit
)的任何测试都应位于 spec / features 目录下,而不是 spec下/要求,他们通常居住在Capybara 1.1.2
。
有关详细信息,请查看以下链接:
如果您不想使用规范/功能目录,则应该能够以下列方式将测试标记为feature
,并使Capybara方法有效:< / p>
describe "Some action", type: :feature do
before do
visit "/users/sign_in"
# ...
end
# ...
end
答案 1 :(得分:4)
在我的情况下,我收到此错误,因为我忘了放require "spec_helper"
在我的新规范文件的顶部。
我已经做了足够多次,我正在为已经回答的问题添加一个答案,希望它能帮助其他一些傻瓜(或者很可能是我将来再次搜索这个问题)。