【问题标题】:Unable to setup Rspec & Capybara in Rails 3.2无法在 Rails 3.2 中设置 Rspec 和 Capybara
【发布时间】:2012-12-25 06:24:48
【问题描述】:

我正在创建一个用于 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_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' 

* 我怀疑我没有正确配置capybara,请告诉我正确配置capybara的方法。

【问题讨论】:

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


    【解决方案1】:

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

    查看以下链接了解更多信息:

    如果您不想使用 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
    

    【讨论】:

    • 从规范/请求中移动我的测试文件 -> 规范/功能对我有用。访问时不再出错。谢谢!
    【解决方案2】:

    将 capybara dsl 添加到规范助手后开始工作

    config.include Capybara::DSL
    

    【讨论】:

    • 如果这是您的解决方案,请接受此答案。我的观点是,为了符合 Capybara 2.0 和 RSpec 对 spec/ 目录结构的期望,最好修改配置;有关详细信息,请查看我的答案中的两个链接。
    【解决方案3】:

    值得一试新的 Capybara DSL 进行集成测试(注意 features 目录):

    # 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 语法和 Capybara DSL for feature/scenarios 写了一篇博客文章,其中包含有关 End-to-end testing with RSpec integration tests and Capybara 的一些详细信息。

    【讨论】:

      【解决方案4】:

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

      require 'capybara/rspec'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        相关资源
        最近更新 更多