5
votes

I am creating a sample application for rspec testing, and I followed the below steps In Gemfile:

gem "rspec-rails", :group => [:test, :development]
group :test do
  gem "factory_girl_rails"
  gem "capybara"
  gem "guard-rspec"
end

Then executed the below steps:

  1. bundle.
  2. rails g rspec:install.
  3. mkdir spec/support spec/models spec/routing.

Added "require capybara/rspec" to my spec_helper file

Created a sample test as below:

require 'spec_helper'
describe "Users" do
  describe " List users" do
    it "List all users" do
      get users_path
      page.has_content?('List Users')
    end
  end
end

but it doesn't work, getting the below error


undefined local variable or method `page' 

* I suspect that I was not configured the capybara properly, Let me know the proper way to configure the capybara.

4

4 Answers

9
votes

Since you didn't specify a version for Capybara in your Gemfile, I assume you've got version >= 2.0, which means that any tests that use page should go under a spec/features directory.

Have a look at the following links for more information:

If you don't want to use a spec/features directory, you should be able to mark a test as a feature in the following way:

require 'spec_helper'
describe "Users" do
  describe " List users", type: :feature do
    it "List all users" do
      get users_path
      page.has_content?('List Users')
    end
  end
end
5
votes

Got working after including the capybara dsl to spec helper

config.include Capybara::DSL
0
votes

Its worth checking out the new Capybara DSL for integration tests (note the features directory):

# spec/features/user_list_spec.rb
require 'spec_helper'

feature 'User list' do
  scenario 'List all users' do
    visit users_path
    expect(page).to have_content 'List Users'
  end
end

I wrote a blog post with some detailed information on End-to-end testing with RSpec integration tests and Capybara using RSpec 2.0 expect syntax, along with Capybara DSL for feature/scenarios.

0
votes

You could also just add this to your spec_helper.rb:

require 'capybara/rspec'