测试我的Ruby gem:未定义的方法`configure' for Shoulda :: Matchers:Module(NoMethodError)

时间:2015-04-14 15:47:42

标签: ruby-on-rails ruby rspec gem shoulda

我正在研究我的第一个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.

感谢您的任何指示!

3 个答案:

答案 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 installShoulda::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