Simplecov报道似乎错过了某些行

Kat*_*ins 7 ruby rspec code-coverage ruby-on-rails

在对simplecov如何确定一条线是否已经通过测试进行了一些澄清之后.

我有以下方法:

def over?
  end_at < Time.zone.now
end
Run Code Online (Sandbox Code Playgroud)

其中end_at是对象的ActiveRecord属性.

在以下规范中执行了哪些操作:

describe CalendarEntry do
  it 'can determine that an event has ended' do
    @entry.end_at = 1.day.ago
    @entry.over?.should be_true
  end
end
Run Code Online (Sandbox Code Playgroud)

运行带有coverage的规范后,它会显示以下结果:

报道报道

我已经在调试模式下运行测试,并在此行上有一个断点,并确认该规范确实正在触及它.

在此方法中,这不仅仅与此行隔离,包含使用ActiveRecord关联的getter的每一行都显示为未覆盖.可能是巧合,但似乎有点奇怪.

环境:ruby 1.9.3-p327(mri),rails 3.2.8,simplecov 0.7.1,rspec 2.10.0.

关于为什么simplecov认为它没有被涵盖的任何想法?

Pie*_*her 1

好的,所以我添加了与在 Windows 上运行的 JRuby 相同的问题。答案实际上是向我提示的,如果不在调试模式下运行,Simplecov 可能会错过一些行。

(j)ruby --debug -S rspec spec
Run Code Online (Sandbox Code Playgroud)

使用 --debug 选项,它确实起作用了,并且我按预期恢复了 100% 的覆盖率。