2012-12-15 3 views
7

simplecov가 테스트에서 라인을 실행했는지 여부를 확인하는 방법에 대한 설명을 한 직후입니다. end_at 객체에 액티브 속성입니다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와 연결된 getter를 사용하는 모든 줄은 다루지 않습니다. 우연 일 수도 있지만 좀 이상하게 보입니다.

환경 : 루비 1.9.3-p327 (mri), 레일 3.2.8, simplecov 0.7.1, rspec 2.10.0.

왜 simplecov는 그것이 다루어지지 않는다고 생각하는지에 대한 아이디어가 있습니까?

+0

'over?'에 대해 false를 반환하는 테스트가 있습니까? 그 방법을 설명 할 수 있지만, 그 코드에 대한 모든 결과가 테스트되고있다. –

+0

감사합니다. @PaulFioravanti, 나는 부정적인 테스트도 받았으며이 커버리지 세션의 일부로 실행되었습니다. –

+0

여기에 문제가 무엇인지 파악할 수 있었습니까? 그렇다면 공유하십시오! 그렇지 않다면, 여러분의 질문을 편집하여 spec의 전체 텍스트 즉,'@ entry'가 정의 된 곳과 테스트의'subject '가 무엇인지를 포함 할 수 있습니까? –

답변

1

그래, Windows에서 실행되는 JRuby에서 같은 종류의 문제를 추가한다. 대답은 실제로 나에게 메시지를 보냈습니다. Simplecov는 디버그 모드에서 실행되지 않은 경우 몇 줄을 놓칠 수 있습니다.

--debug 옵션을 사용하면 제대로 작동했으며 예상대로 100 % 적용 범위로 돌아 왔습니다.

관련 문제