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 に答える