如何在 Rails 应用程序中检查 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

它显示了我的控制器和模型有多少类和方法。但我在这里缺少的是有多少人接受了测试。我希望在那里拥有它而不是零。同时,很高兴知道测试未涵盖哪些方法。是否有提供该信息的 gem 或其他方法来检查它?

我会为此推荐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
# OPTIONAL
# This outputs the report to your public folder
# You will want to add this to .gitignore
SimpleCov.coverage_dir 'public/coverage'

这使得它忽略测试、配置和供应商文件夹中的文件,并将控制器、模型、帮助程序和邮件程序分组在 HTML 报告中自己的选项卡下。

相关内容

  • 没有找到相关文章

最新更新