ruby-on-rails 如何测试Rails ERB模板的代码覆盖率?

vwkv1x7d  于 2023-03-09  发布在  Ruby
关注(0)|答案(3)|浏览(117)

我只是在为一个遗留的Rails应用构建一个测试套件。simplecov gem对于发现应用中需要测试覆盖的黑暗角落(或者可能完全没有使用,可以删除)非常有用。我只是在test/test_helper.rb的顶部包含以下内容来调用simplecov

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

问题是这并没有检查所有嵌入在模板中的代码,那里有各种各样的垃圾,我相信很多都可以被删除,但是如果代码覆盖工具能告诉我没有使用的代码,那就太好了。
对Ruby 1.9的Coverage库的一些实验使我相信,只有当模板以某种方式预编译为Ruby代码,保存在Ruby源文件中,然后load ed或require d,而不是直接用eval加载编译后的模板时,它才能完成这项工作。有可能攻击ERB,在编译过程中向每个模板的每一行添加日志记录语句。
有没有人知道如何度量ERB模板的代码覆盖率?你知道一个已经做好的工具可以做到这一点吗?(或者我必须是一个构建和发布它的人?)

u4dcyp6a

u4dcyp6a1#

参见:How do I get coverage for view specs with rspec, rails, and simplecov?
答案是,你不能:
https://github.com/colszowka/simplecov/issues/38
这是一个严重的缺陷,我希望有人能解决。AFIK没有什么比简单的Ruby 1.9更好的了

5fjcxozz

5fjcxozz2#

几年前,有一个新的Gem可用于模板覆盖检测:covered
https://github.com/ioquatix/covered

require 'covered/rspec'
COVERAGE=Summary rspec

它将在测试运行之后显示所有接触过的模板的代码覆盖率。

sg24os4d

sg24os4d3#

尝试rake统计
它将生成一个包含应用程序每个部分的覆盖范围的表

相关问题