我正在尝试设置 SimpleCov 为 3 个应用程序生成报告,这些应用程序从本地 gem 共享大部分代码(模型、控制器),但每个应用程序使用的代码的规范位于每个 ./spec 内,而不是在 gem 本身上。
举个更清楚的例子。当我在 app_1 中运行使用来自本地 gem 的共享模型的 bundle exec rspec spec 时,我想获得此 app_1 在 ./spec 中的所有规格的(准确)报告。
本地 gem 还有一些专门属于 app_2 的模型,位于命名空间内,因此当我在 app_1 内运行测试套件时,我想跳过这些文件的报告。
我正在尝试使用 app_1/spec/spec_helper 中的以下代码来实现此目的。
# This couple of lines are needed to generate report for the models, etc. inside the local gem.
SimpleCov.adapters.delete(:root_filter)
SimpleCov.filters.clear
SimpleCov.adapters.define 'my_filter' do
root = SimpleCov.root.split("/")
root.pop
add_filter do |src|
!(src.filename =~ /^#{root.join("/")}/)
end
add_filter "/app_2_namespace/"
end
if ENV["COVERAGE"] == "true"
SimpleCov.start 'rails'
end
Run Code Online (Sandbox Code Playgroud)
这是有效的,直到一些问题开始出现。 …