【问题标题】:testing my Ruby gem: undefined method `configure' for Shoulda::Matchers:Module (NoMethodError)测试我的 Ruby gem:Shouda::Matchers:Module 的未定义方法 `configure' (NoMethodError)
【发布时间】:2015-04-14 15:47:42
【问题描述】:

我正在开发我的第一个 Ruby gem,并捆绑了 cucumber、rspec 和 shoulda-matches 进行测试。当我运行 rspec 时,我收到以下错误:

/app/my_gem/spec/spec_helper.rb:6:in `<top (required)>': undefined method `configure' for Shoulda::Matchers:Module (NoMethodError)

这是我的宝石规格:

# 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.

感谢您的指点!

【问题讨论】:

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


    【解决方案1】:

    您似乎正在尝试使用支持 3.0.0.alpha 的 3.0.0.alpha 版本的 shoulda-matchers 的文档,但使用的是旧版本。请查看您正在使用的版本的正确文档(我猜是 2.8.x)或更新您的 Gemfile 以使用 3.0.0.alpha

    gem 'shoulda-matchers', github: 'thoughtbot/shoulda-matchers'
    

    然后运行bundle installShoulda::Matchers.configure 应该开始工作了。

    【讨论】:

    • 谢谢,您说的完全正确。我使用的是 2.8.0,不需要配置块
    • 它是拼写错误,我在运行 bundle install 时花了一段时间才发现错误
    【解决方案2】:

    @infused 提供的解决方案是正确的。

    GitHub 中提供的文档和配置适用于 3.x 版本,而不适用于 2.x。

    为了使其正常工作,将 should-matchers 的版本更改为 '~> 3.0.0.alpha',然后运行 ​​'bundle update should-matchers'

    【讨论】:

      【解决方案3】:

      Git 协议已弃用,现在使用:

         gem 'shoulda-matchers', git: 'https://github.com/thoughtbot/shoulda-matchers.git'
      

      (根据https://github.com/thoughtbot/shoulda-matchers/issues/719#issuecomment-103556439

      【讨论】:

        猜你喜欢
        • 2015-01-12
        • 2023-03-06
        • 2018-05-16
        • 2018-04-20
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多