通过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:
进行测试。
答案 0 :(得分:1)
shoulda库未包含在您的simplecov运行中。
easycov可能在不同于:test
的环境中运行吗?如果它只在Gemfile中的:test
组中,那么可能会导致不加载shoulda 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格式化程序可能并不重要。