我正在研究我的第一个Ruby gem,并将黄瓜,rspec和shoulda-matches捆绑在一起进行测试。当我运行rspec时,我收到以下错误:
/app/my_gem/spec/spec_helper.rb:6:in `<top (required)>': undefined method `configure' for Shoulda::Matchers:Module (NoMethodError)
这是我的gemspec:
# my_gem.gemspec
...
Gem::Specification.new do |spec|
...
...
spec.add_development_dependency "activemodel"
spec.add_development_dependency "bundler", "~> 1.8"
spec.add_development_dependency "cucumber"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec"
spec.add_development_dependency "shoulda-matchers"
end
我的spec_helper.rb
:
require 'my_gem'
require 'pry'
require 'shoulda/matchers'
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
# with.library :active_record
with.library :active_model
# with.library :action_controller
# Or, choose all of the above:
# with.library :rails
end
end
由于某种原因,它发现了Shoulda :: Matchers而不是.configure
方法。我是否以某种方式要求shoulda
错误?不确定这是否相关,但是rspec也给了我这个警告:
WARN: Unresolved specs during Gem::Specification.reset:
json (>= 1.7.7, ~> 1.7)
minitest (~> 5.1)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
感谢您的任何指示!
答案 0 :(得分:10)
看起来您正在尝试使用支持3.0.0.alpha
的3.0a.alpha版本的shoulda-matcher,但使用的是旧版本。请查看您正在使用的版本的正确文档(我猜2.8.x)或更新您的Gemfile以使用3.0.0.alpha
:
gem 'shoulda-matchers', github: 'thoughtbot/shoulda-matchers'
然后运行bundle install
,Shoulda::Matchers.configure
应该开始工作。
答案 1 :(得分:0)
@infused提供的解决方案是正确的。
GitHub中提供的文档和配置适用于版本3.x而不适用于2.x。
为了使其有效,将应该匹配的版本更改为&#39;〜&gt; 3.0.0.alpha&#39;然后运行捆绑更新应该匹配&#39;
答案 2 :(得分:-1)
Git协议已弃用,现在使用:
gem 'shoulda-matchers', git: 'https://github.com/thoughtbot/shoulda-matchers.git'
(每https://github.com/thoughtbot/shoulda-matchers/issues/719#issuecomment-103556439)