0

我在 Rails 6.1.3.1 中遇到了一个奇怪的测试问题。我创建了一个文件,用于生成有关我的数据的各种统计信息,该文件位于lib/modules/stats.rb. 我添加了一个test/modules/stats_test.rb运行此测试的测试文件,并且我有 100% 的覆盖率。

这些统计数据可以在不同的地方使用,其中之一是在 Rake 任务中。所以,我lib/tasks/stats.rake按照以下思路创建了 :

require "#{Rails.root}/lib/modules/stats.rb"
include Stats

namespace :stats do

  desc 'Print all the stats'
  task :print => [:environment] do
    stats = StatsMethods.generate_all_the_stats
    puts stats
  end

end

由于此文件的第一行存在,rake test不再运行test/modules/stats_test.rb;覆盖率成比例下降。这里发生了什么?

4

1 回答 1

0

重构如下解决了这个问题,虽然我不知道为什么(欢迎提出建议):

namespace :stats do

  desc 'Generate all the stats'
  task :generate => [:environment] do
    require File.join(Rails.root, 'lib', 'modules', 'stats.rb')
    include Stats
    stats = StatsMethods.generate_all_the_stats
    puts stats
  end

end
于 2021-04-16T15:42:52.623 回答