2

当通过一切正常运行我的 rails 4 rspec 套件rake时,但是在尝试运行时,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:.

4

1 回答 1

1

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

simplecov 是否在不同的环境中运行:test:test如果应该只在Gemfile的组中,这可能会导致不加载应该 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 格式化程序可能并不重要。

于 2013-09-11T19:28:04.113 回答