当通过rake运行我的rails 4 rspec套件时,一切正常,但是当尝试运行rake simplecov时,我会遇到数百次失败,所有的失败都是w/aNoMethodError之类的:

  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:进行测试。

最佳答案

shoulda库未包含在simplecov运行中。
SimpleCoV是否运行在与:test不同的环境中?如果shoulda gem只在Gemfile的:test组中,那么它可能不会被加载。
如何将simplecov包含在您的spec_助手中?像这样的?

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

作为你的第一行?
你的档案里有这样的东西吗?
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格式化程序可能并不重要。

关于ruby-on-rails - Rspec SimpleCov NoMethodError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18749475/

10-13 02:09