4

我在使用 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。这是回溯的一个片段:

/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
4

3 回答 3

5

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

于 2011-06-06T16:24:52.910 回答
5

例如,如果您只想做“请求规格”(如 railscasts 的“我如何测试”中所定义),似乎并不真的需要牛排。另请参阅:除了在 Rails 测试中使用 Capybara 和 RSpec 之外,Steak 还添加了什么?

我刚刚在这里设置了 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)

于 2012-07-23T13:40:54.093 回答
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.

于 2011-05-03T20:35:15.627 回答