Как проверить покрытие кода 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.