【发布时间】:2012-12-03 02:37:25
【问题描述】:
在对 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 认为它没有被涵盖的任何想法?
【问题讨论】:
-
您是否有一个测试会为
over?返回 false?这可以解释被命中的方法,但不能解释正在测试的代码的所有结果。 -
谢谢@PaulFioravanti,我也有一个阴性测试,它是作为这次报道会议的一部分运行的。
-
您能找出问题所在吗?如果有,请分享!如果没有,您能否编辑您的问题以包含您的规范的全文,即定义
@entry的位置以及测试的subject是什么。 -
我遇到了同样的问题。我在 1.9 模式下使用 JRuby 1.7.1、Rails 3.2.11 和最新的 Simplecov 版本。由于我在每次运行时都有调试标志警告,我认为它可能是相关的。如果您找到解决方案,请随时通知我们。
标签: ruby-on-rails ruby rspec code-coverage