undefined method `visit' when using RSpec and Capybara in rails
Try to add:
config.include Capybara::DSL
to your config block.
# This file is copied to spec/ when you run 'rails generate rspec:install'ENV["RAILS_ENV"] ||= 'test'require File.expand_path("../../config/environment", __FILE__)require 'rspec/rails'require 'rspec/autorun'# Requires supporting ruby files with custom matchers and macros, etc,# in spec/support/ and its subdirectories.Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures # config.fixture_path = "#{::Rails.root}/spec/fixtures" config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false config.order = "random" # Include path helpers config.include Rails.application.routes.url_helpers config.include Capybara::DSLend
Adding require 'rails_helper'
at the top of my feature ended up fixing my problem:
require 'rails_helper'describe "security", :type => :feature do it "signs users in" do visit new_sessions_path fill_in "username", :with => "user" fill_in "password", :with => "pass" click_button "Sign In" page.should have_content('Login Successful') endend
This seems odd to me since every example I've seen for rspec and capybara didn't have that require, but oh well. Problem solved.
Original Answer (older versions of rspec)
require 'spec_helper'
is used by older versions of RSpec. The better answer would be require 'rails_helper'
.
Since Capybara 2.0 one has to use folder spec/features Capybara commands don't work in folder spec/requests anymore.