【问题标题】:Setting up Capybara for Rails 2.3 and Rspec为 Rails 2.3 和 Rspec 设置 Capybara
【发布时间】:2011-04-20 14:10:39
【问题描述】:

我在使用 Rspec 1.3 的 rails 2.3.8 应用程序中设置 capybara (0.4.1.2) 时遇到了一些问题根据安装 capybara 说明,我插入了以下行:

require 'capybara/rspec' 

但是,这给了我一个缺少的常量错误。似乎它正在寻找一个未加载的类“RSpec”(我猜这是 RSpec 2 / Rails 3 的东西)。

那么如何让 Rspec 在 Rails 2.3 下识别水豚?我应该使用早期版本的 capy 吗?

PS。这是回溯的 sn-p:

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|443| in `load_missing_constant': uninitialized constant RSpec (NameError)

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|80| in `const_missing_not_from_s3_library'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb|206| in `const_missing'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|92| in `const_missing'

||  from /Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/capybara-0.4.1.2/lib/capybara/rspec.rb:4


/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/rails-2.3.5/lib/rails/gem_dependency.rb|119| Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010.  Use #requirement

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|443| in `load_missing_constant': uninitialized constant RSpec (NameError)

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|80| in `const_missing_not_from_s3_library'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb|206| in `const_missing'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|92| in `const_missing'

|   from /Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/capybara-0.4.1.2/lib/capybara/rspec.rb:4

/Users/rafe/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb|31| in `gem_original_require'

/Users/rafe/.rvm/rubies/ruby-1.8.6-p399/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb|31| in `require'

/Users/rafe/.rvm/gems/ruby-1.8.6-p399@lci/gems/activesupport-2.3.5/lib/active_support/dependencies.rb|158| in `require'

||  from /Users/rafe/cmi/lci/branches/forums/spec/spec_helper.rb:12

【问题讨论】:

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


    【解决方案1】:

    Capybara 没有内置对 RSpec 1.x 的支持。但是,您可以使用 Steak 而不是滚动您自己的 RSpec 支持。

    【讨论】:

      【解决方案2】:

      如果你只想做'请求规格'(如 railscasts 的“我如何测试”中定义的那样),似乎并不真的需要牛排。 另见:What does Steak add beyond just using Capybara and RSpec in Rails testing?

      我刚刚在这里设置了rails 2.3 + rspec 1 + capybara(最新版本),没有任何麻烦

      你不能拥有require capybara/rspec,但它似乎所做的只是添加一些匹配器......但真正重要的是水豚及其 DSL 和验证东西

      Capybara 适用于任何机架应用

      在我的spec_helper.rb

      require 'capybara/rails'
      include Capybara::DSL
      

      就是这样 (只需点击 Capybara 的文档,它是 DSL,因为一些 rspec-capybara 匹配器可能会丢失,没有什么会阻塞,tho)

      【讨论】:

      • 我收到此错误:未初始化的常量 Capybara::DSL (NameError)
      • 我建议对您的 spec_helper.rb 进行一些调试...我认为这可能是因为我们已经在这个 rails 2.3 项目上使用了 bundler,所以 Bundler 可能会自动需要 capybara对我来说...查看 Capybara doc 并查看哪个文件需要 capybara/dsl,也许在 spec_helper.rb 之上的 require 'capybara' 可以解决问题
      【解决方案3】:

      来自 Capybara 文档,

      Note that Capybara’s built in RSpec support only works with RSpec 2.0 or later. You’ll need to roll your own for earlier versions of RSpec.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 2012-05-07
        相关资源
        最近更新 更多