如何测试Rails ERB模板的代码覆盖率?

时间:2012-10-23 12:56:18

标签: ruby-on-rails ruby testing code-coverage erb

我只是为传统的Rails应用程序构建测试套件。 simplecov宝石非常适合找到需要测试覆盖率的应用程序的黑暗角落(或者可能完全未使用且可以删除)。我只是通过在simplecov的顶部添加以下内容来调用test/test_helper.rb

require 'simplecov'
SimpleCov.start('rails')

问题是,这不会检查模板中嵌入的所有代码。那里有各种各样的垃圾,我确信它可以被删除很多,但如果代码覆盖工具可以指向未使用的位,那将是非常好的。

使用Ruby 1.9的Coverage库进行的一些实验使我相信,只有模板以某种方式预编译为Ruby代码,保存在Ruby源文件中,然后{{1}才能完成工作。编辑或load d,而不是直接使用require加载已编译的模板。或者,可能会破坏ERB在编译过程中向每个模板的每一行添加日志记录语句。

有没有人有任何其他想法如何衡量ERB模板的代码覆盖率?你知道一个可以做到这一点的已经制造的工具吗? (或者我必须成为构建和发布它的人吗?)

2 个答案:

答案 0 :(得分:9)

请参阅: How do I get coverage for view specs with rspec, rails, and simplecov?

答案是,你不能:

https://github.com/colszowka/simplecov/issues/38

这是我希望有人会解决的关键缺陷。 AFIK没有比Ruby 1.9的simplecov更好的了。

答案 1 :(得分:-2)

尝试rake stats

它会生成一个表格,其中包含应用程序的每个部分的覆盖范围