8

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

我有以下方法:

def over?
  end_at < Time.zone.now
end

其中 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

运行覆盖率的规范后,它显示以下结果:

覆盖率报告

我已经在调试模式下运行了测试,并在此行设置了一个断点,并确认规范确实达到了它。

这并不仅仅局限于此方法中的这一行,包括使用 ActiveRecord 关联的 getter 的每一行都显示为未涵盖。可能是巧合,但似乎有点奇怪。

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

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

4

1 回答 1

1

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

(j)ruby --debug -S rspec spec

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

于 2013-01-28T12:14:51.263 回答