【问题标题】:Rspec SimpleCov NoMethodErrorRspec SimpleCov NoMethodError
【发布时间】:2013-09-11 19:18:11
【问题描述】:

当通过 rake 运行我的 rails 4 rspec 套件时,一切正常,但是当尝试运行 rake simplecov 时,我遇到了数百次失败,全部带有 NoMethodError 类似:

  1) Answer Validations
     Failure/Error: it { should validate_presence_of :text }
     NoMethodError:
       undefined method `validate_presence_of' for #<RSpec::Core::ExampleGroup::Nested_16::Nested_1:0x007faf9fb5b7c8>
     # ./spec/models/answer_spec.rb:12:in `block (3 levels) in <top (required)>'

关于为什么会发生这种情况的任何线索?我还应该提到我正在使用sqlite3 :memory: 进行测试。

【问题讨论】:

    标签: ruby-on-rails ruby rspec ruby-on-rails-4 simplecov


    【解决方案1】:

    shoulda 库未包含在您的 simplecov 运行中。

    simplecov 是否运行在与:test 不同的环境中?如果应该只在 Gemfile 的 :test 组中,这可能会导致不加载应该的 gem。

    你是如何在你的 spec_helper 中包含 simplecov 的?像这样?

    require 'simplecov'
    require 'simplecov-rcov'
    SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
    SimpleCov.start 'rails' if ENV['COVERAGE']
    

    作为spec_helper.rb第一行

    在你的 Gemfile 中有类似的东西吗?

    group :test, :development do
      ...
      gem 'rspec-rails', '~> 2.0'
      gem 'shoulda-matchers'
    end
    
    group :test do
      gem 'simplecov'
      gem 'simplecov-rcov'
    end
    

    然后像这样执行它?

    $ COVERAGE=true bundle exec rake spec
    

    这个食谱在很多项目中都非常适合我。根据您的目的,RCov 格式化程序可能并不重要。

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多