使用RSpec 2.5运行rcov时跳过spec /中的文件

时间:2011-03-17 14:26:41

标签: ruby-on-rails ruby ruby-on-rails-3 rspec2 rcov

为Rails 3应用程序运行rake spec:rcov时,spec/目录中的文件将包含在coverage统计信息中,但我不希望它们出现。我只希望覆盖统计数据用于我的实际应用。

在旧版本的RSpec中,可以使用spec/rcov.opts文件使用行--exclude "spec/*"对其进行自定义,但似乎Rspec 2不再读取该文件。我尝试创建{{ 1}}文件,因为.rcov已更改为spec/spec.opts,但该文件也未被读取。

我在定义rake任务时找到了一些关于如何执行此操作的文档,但我宁愿不覆盖提供的rake任务 - 看起来这必须是其他人尝试过的事情。

如何自定义从coverage统计信息中排除的文件?

作为参考,我正在使用的所有相关宝石的版本是:

.rspec

1 个答案:

答案 0 :(得分:6)

来自RSpec Upgrade file

  

在RSpec-1中,rake任务将会读取   来自rcov.opts的rcov选项       文件。 RSpec-2忽略了这一点。 RCov选项现在直接设置   耙子       任务:

    RSpec::Core::RakeTask.new(:rcov) do |t|
      t.rcov_opts =  %q[--exclude "spec"]
    end

检查rspec-rails源代码我发现该库定义了:rcov任务,但它似乎没有排除rspec文件夹。

desc "Run all specs with rcov"
RSpec::Core::RakeTask.new(:rcov => spec_prereq) do |t|
  t.rcov = true
  t.pattern = "./spec/**/*_spec.rb"
  t.rcov_opts = '--exclude /gems/,/Library/,/usr/,lib/tasks,.bundle,config,/lib/rspec/,/lib/rspec-'
end

您可能希望删除任务并使用自己的设置重新创建任务或定义新任务。