Simple cov gem missing untested files in Rails
Eager load the whole Rails app when running tests suite with code coverage.
Add Rails.application.eager_load!
to spec_helper.rb
.
Simplecov slows down tests that's why I use shell environment variable to turn it on. Usually my spec_helper.rb
/rails_helper.rb
looks something like this:
if ENV['COVERAGE']
require 'simplecov'
# some SimpleCov setup, e.g. formatters
SimpleCov.start 'rails'
end
ENV['RAILS_ENV'] ||= 'test'
require 'spec_helper'
require File.expand_path('../../config/environment', __FILE__)
require 'rspec/rails'
Rails.application.eager_load! if ENV['COVERAGE']
Since version 0.11.0 the files that should be tracked can be explicit set (Pull Request).
For a Rails app that would be:
require 'simplecov'
SimpleCov.start do
track_files '{app,lib}/**/*.rb'
end
Or simple use:
require 'simplecov'
SimpleCov.start 'rails'
And the files to be tracked will be set by default (current related code).
Try to edit your config/environments/test.rb
and set this line:
config.eager_load = false
to true
in this way the whole app is loaded and simplecov reads it.