2012-12-15 13 views
7

Subito dopo alcuni chiarimenti su come simplecov determina se una linea è stata esercitata da un test.Simplecov rapporto di copertura sembra mancare alcune linee

ho il seguente metodo:

def over? 
    end_at < Time.zone.now 
end 

in cui end_at è un attributo ActiveRecord sull'oggetto.

che viene esercitata nei seguenti specifiche:

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 

Dopo aver eseguito le specifiche con una copertura, mostra il seguente risultato:

coverage report

Ho eseguito il test in modalità debug con un punto di interruzione su questa linea e confermato che la specifica lo sta effettivamente colpendo.

Questo non è isolato solo da questa linea in questo metodo, ogni linea che include l'uso di un getter associato ad ActiveRecord viene mostrato come non coperto. Potrebbe essere una coincidenza, ma sembra un po 'strano.

Ambiente: rubino 1.9.3-p327 (mri), rotaie 3.2.8, simplecov 0.7.1, rspec 2.10.0.

Delle idee su perché simplecov pensa non è coperto?

+0

Hai un test che restituirà false per 'over?'? Ciò potrebbe spiegare il metodo da colpire, ma non tutti i risultati per quel codice in fase di test. –

+0

Grazie a @PaulFioravanti, ho anche un test negativo ed è stato eseguito come parte di questa sessione di copertura. –

+0

Sei riuscito a capire quale fosse il problema? Se è così, per favore condividi! In caso contrario, saresti in grado di modificare la tua domanda per includere il testo completo della tua specifica, ovvero dove viene definito "@ entry" e qual è il "soggetto" del test. –

risposta

1

OK quindi aggiungere lo stesso tipo di problema con JRuby in esecuzione su Windows. Mi è stata effettivamente fornita la risposta, Simplecov può perdere alcune linee se non viene eseguito in modalità di debug.

(j)ruby --debug -S rspec spec 

Con l'opzione --debug ha funzionato e sono tornato al 100% di copertura come previsto.

Problemi correlati