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

Ale*_*x D 11 ruby testing code-coverage ruby-on-rails erb

我只是为传统的Rails应用程序构建测试套件.该simplecov宝石一直是伟大的发现它需要的测试覆盖率应用四角发暗(或者可能是完全没有使用的OK删除).我simplecov只是通过在顶部包含以下内容来调用test/test_helper.rb:

require 'simplecov'
SimpleCov.start('rails')
Run Code Online (Sandbox Code Playgroud)

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

使用Ruby 1.9 Coverage库进行的一些实验让我相信,如果模板以某种方式预编译为Ruby代码,保存在Ruby源文件中,然后load编辑或require删除,而不是直接加载编译模板,那么它只能完成工作.与eval.或者,可能会破坏ERB在编译过程中向每个模板的每一行添加日志记录语句.

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

小智 11

请参阅: 如何使用rspec,rails和simplecov获取视图规范的覆盖范围?

答案是,你不能:

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

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

  • 好的。谢谢。我会接受这个答案......但后来我想我可能只需要自己为这个问题创建一个解决方案,如果我这样做了,那将成为公认的答案。 (2认同)