我正在尝试将我的测试套件升级到RSpec 3.在阅读了如何操作的文档后,我遵循了所有步骤...我已升级到2.99.2并运行了transpec gem(太棒了!)我是留下一个弃用......这个:
`require 'rspec-expectations'` is deprecated. Use `require'rspec/expectations'` instead. Called from /Users/kierancormack/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/bundler-1.8.3/lib/bundler/runtime.rb:76:in `require'.
我不明白我应该做什么。我已经改变了我的Gemfile看起来像这样但它只是抛出一个错误。我已经在spec_helper.rb中要求了它,但我似乎无法让它消失!
有人对如何处理此弃用有任何建议吗?
由于
答案 0 :(得分:2)
RSpec 2.x提供了一个rspec/expectations
文件,只需委托给require 'rspec/expectations'
。但是,ruby社区中的一般约定是gem名称中的破折号对应于顶级文件名中的/
- 因此大多数ruby程序员都知道应该要求使用gem x-y
x/y
。作为我们的3.0弹簧清洁的一部分,我们删除了rspec-expectations
文件,因为它是一个不需要的间接层。因此,您需要rspec/expectations
而不是rspec-expectations
。
在您的情况下,堆栈跟踪使它看起来像在Bundler内发生require
。当您使用Bundler.require
时,它会尝试为Gemfile
中的每个gem要求一个与gem名称匹配的文件。有good reasons to avoid Bundler.require
但如果您要使用它,则此处的修复方法是将:require => "rspec/expectations"
添加到gem 'rspec-expectations'
中的Gemfile
行。
实际上,如果您正在使用rspec-core
(单独或通过rspec-rails
),则根本不需要rspec/expectations
; rspec-core
会在适当的时候为您加载,因此您可以使用:require => false
来阻止捆绑程序尝试使用它。
事实上,我们可以向前迈出一步:rspec-core
和rspec-rails
都取决于rspec-expectations
,因此您通常不需要rspec-expectations
除非你正在做一些特别的事情(例如尝试使用github中的fork或HEAD),或者你自己在Gemfile
或者rspec-core
上使用它,否则你的rspec-rails
rspec-expectations
。因此,除非您有特定原因要在Gemfile
中列出<appSettings>
<key="Tax" value="5.8"/>
</appSettings>
,否则我建议您将其删除。