无法设置Rspec& Rails 3.2中的Capybara

时间:2012-12-25 06:24:48

标签: ruby-on-rails-3.2 capybara rspec-rails

我正在为rspec测试创建一个示例应用程序,我按照以下步骤操作 在Gemfile中:

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

然后执行以下步骤:

  1. 束。
  2. rails g rspec:install。
  3. mkdir spec / support spec / models spec / routing。
  4. 在我的spec_helper文件中添加了“require capybara / rspec”

    创建了一个样本测试,如下所示:

    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
    

    但它不起作用,得到以下错误


    undefined local variable or method `page' 
    

    * 我怀疑我没有正确配置水豚,让我知道配置水豚的正确方法。

4 个答案:

答案 0 :(得分:9)

由于您未在 Gemfile 中指定Capybara的版本,我假设您已获得版本>= 2.0,这意味着任何使用page的测试都应该进入 spec / features 目录。

有关详细信息,请查看以下链接:

如果您不想使用规范/功能目录,则应该能够通过以下方式将测试标记为feature

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

答案 1 :(得分:5)

在将capybara dsl包含在规范助手

之后开始工作
config.include Capybara::DSL

答案 2 :(得分:0)

值得查看新的Capybara DSL进行集成测试(请注意功能目录):

# 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

我使用RSpec 2.0 expect语法编写了一篇关于End-to-end testing with RSpec integration tests and Capybara的详细信息的博客文章,以及feature/scenarios的Capybara DSL。

答案 3 :(得分:0)

您也可以将其添加到spec_helper.rb:

require 'capybara/rspec'