2012-12-15 13 views
7

Zaraz po wyjaśnieniu, jak simplecov określa, czy linia została wykonana przez test.Raport o pokryciu Simplecov wydaje się brakować niektórych linii

I mają następujące metody:

def over? 
    end_at < Time.zone.now 
end 

w którym end_at jest atrybutem ActiveRecord na obiekcie.

Która jest sprawowana w poniższej specyfikacji:

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 

Po uruchomieniu spec z ubezpieczenia, to pokazuje następujący wynik:

coverage report

Zabrakło mi test w trybie debugowania z punktem przełomowym w tej linii i potwierdził, że specyfikacja rzeczywiście go uderza.

To nie jest izolowane tylko dla tego wiersza w tej metodzie, każda linia zawierająca użycie pobierającego skojarzonego z ActiveRecord jest pokazana jako nieobjęta. Może być zbieg okoliczności, ale wydaje się nieco dziwne.

Środowisko: rubin 1.9.3-p327 (mri), tory 3.2.8, simplecov 0.7.1, rspec 2.10.0.

Jakieś pomysły na to, dlaczego Simplecov sądzi, że nie są objęte gwarancją?

+0

Czy masz test, który zwróci wartość false dla 'over?'? To może wyjaśnić metodę trafienia, ale nie wszystkie wyniki dla testowanego kodu. –

+0

Dzięki @PaulFioravanti, mam również negatywny test i został uruchomiony w ramach tej sesji pokrycia. –

+0

Czy byłeś w stanie dowiedzieć się, jaki był problem? Jeśli tak, proszę udostępnij! Jeśli nie, czy byłbyś w stanie edytować swoje pytanie, aby zawrzeć pełny tekst specyfikacji, tj. Gdzie zdefiniowano '@ wpis' i jakie jest" temat "testu. –

Odpowiedz

1

OK, więc dodam ten sam rodzaj problemu z JRuby działającym pod Windows. Odpowiedź była właściwie mi podpowiedziana, Simplecov może ominąć niektóre linie, jeśli nie są uruchomione w trybie debugowania.

(j)ruby --debug -S rspec spec 

Z opcją --debug zadziałało i wróciłem do 100% zasięgu zgodnie z oczekiwaniami.

Powiązane problemy