2012-12-15 7 views
7

simplecovがテストによって行が実行されたかどうかを判断する方法を明確にした直後。 end_atがオブジェクト上のActiveRecordの属性ですSimplecovのカバレッジレポートが特定の行を見逃していると思われる

def over? 
    end_at < Time.zone.now 
end 

れる:

は、私は次のような方法があります。以下の仕様で行使され

:私はデバッグモードでテストを実行しました

coverage report

:カバレッジとスペックを実行した後

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の関連ゲッターの使用を含むすべての行が示されています。偶然かもしれないが、ちょっと変わっているようだ。

環境:ルビー1.9.3-P327(MRI)は、3.2.8、0.7.1 simplecov、2.10.0 RSpecのレール。

シンプルコフがそれをカバーしていないと思われる理由についてのアイデアはありますか?

+0

'over? 'に対してfalseを返すテストがありますか?それはヒットしたメソッドを説明することができますが、そのコードのすべての結果がテストされているわけではありません。 –

+0

ありがとう@PaulFioravanti、私も同様に否定的なテストをしており、このカバレッジセッションの一環として実行されました。 –

+0

ここに何があったのか分かりましたか?もしそうなら、共有してください!そうでない場合は、あなたの仕様の全文、すなわち '@ entry'が定義されている場所とテストの' subject 'が何であるかを質問に編集できますか? –

答えて

1

これでWindows上で実行されているJRubyに同じ種類の問題が追加されます。 答えが実際に私に聞かれました、Simplecovはデバッグモードで実行されていない場合、いくつかの行を見逃す可能性があります。

(j)ruby --debug -S rspec spec 

--debugオプションを使用すると正常に機能し、期待どおり100%のカバレッジに戻りました。

関連する問題