Как проверить покрытие кода rspec

Я работаю над своим первым простым Rails-приложением. И теперь я только что сделал домашнее задание, которое я должен сделать раньше всего - тесты rspec. Я отложил это намеренно, потому что из-за отсутствия опыта я даже не был уверен, что и как делать тесты rspec. Наконец, у меня есть, наверное, большинство тестов для моих моделей и контроллеров, и мне пора подумать о том, насколько мои тесты охватывают код.

Затем я нашел rake stats, которая показывает мне, что:

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   214 |   161 |       4 |      29 |   7 |     3 |
| Helpers              |    12 |    12 |       0 |       1 |   0 |    10 |
| Models               |    17 |    13 |       2 |       0 |   0 |     0 |
| Mailers              |     0 |     0 |       0 |       0 |   0 |     0 |
| Javascripts          |    29 |     3 |       0 |       1 |   0 |     1 |
| Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |
| Helper specs         |    15 |     4 |       0 |       0 |   0 |     0 |
| Controller specs     |   170 |   137 |       0 |       0 |   0 |     0 |
| Model specs          |    78 |    65 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |   535 |   395 |       6 |      31 |   5 |    10 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 189     Test LOC: 206     Code to Test Ratio: 1:1.1

Он показывает, сколько классов и методов имеют мои контроллеры и модели. Но то, что мне не хватает, - это сколько из них проверено. Я хочу иметь его вместо нулей. В то же время было бы неплохо узнать, какие методы не имеют своих тестов. Есть ли драгоценный камень, который предоставляет эту информацию или какой-либо другой способ проверить это?

Ответы

Ответ 1

Я бы порекомендовал SimpleCov для этого.

Вот хорошая начальная конфигурация, которую нужно вставить в ваш spec_helper.rb:

SimpleCov.start do
  add_filter '/test/'
  add_filter '/config/'
  add_filter '/vendor/'

  add_group 'Controllers', 'app/controllers'
  add_group 'Models', 'app/models'
  add_group 'Helpers', 'app/helpers'
  add_group 'Mailers', 'app/mailers'
end
# This outputs the report to your public folder
# You will want to add this to .gitignore
SimpleCov.coverage_dir 'public/coverage'

Это позволяет игнорировать файлы в ваших тестовых, конфигурационных и вендорных папках и группах контроллеров, моделей, помощников и почтовых программ на их собственных вкладках в отчете HTML.