2012-12-15 20 views
7

कुछ स्पष्टीकरण के बाद कि कैसे सरलकोव निर्धारित करता है कि परीक्षण द्वारा एक लाइन का उपयोग किया गया है या नहीं। जिसमेंसिंपलकोव कवरेज रिपोर्ट कुछ लाइनों को याद करने लगती है

def over? 
    end_at < Time.zone.now 
end 

end_at वस्तु पर एक ActiveRecord विशेषता है:

मैं निम्न विधि है।

कौन सा निम्नलिखित कल्पना में प्रयोग किया जाता है:

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-पी 327 (एमआरआई), रेल 3.2.8, सरलकोव 0.7.1, आरएसपीसी 2.10.0।

सरलकोव क्यों सोचता है कि यह कवर क्यों नहीं है पर कोई विचार?

+0

क्या आपके पास एक परीक्षण है जो 'ओवर?' के लिए झूठी वापसी करेगा? यह हिट होने वाली विधि को समझा सकता है, लेकिन उस कोड के परीक्षण के लिए सभी नतीजे नहीं हैं। –

+0

धन्यवाद @ पॉलफियोरावती, मेरे पास नकारात्मक परीक्षण भी है और यह इस कवरेज सत्र के हिस्से के रूप में चलाया गया था। –

+0

क्या आप यह समझने में सक्षम थे कि समस्या क्या थी? यदि हां, तो कृपया साझा करें! यदि नहीं, तो क्या आप अपने प्रश्न का पूरा पाठ शामिल करने के लिए अपने प्रश्न को संपादित करने में सक्षम होंगे अर्थात कहां '@ एंट्री' परिभाषित किया गया है और परीक्षण का 'विषय' क्या है। –

उत्तर

1

ठीक है इसलिए मैं विंडोज़ पर चल रहे जेआरबी के साथ एक ही तरह की समस्या जोड़ता हूं। उत्तर वास्तव में मुझे संकेत दिया गया था, अगर डिबग मोड में नहीं चलाया जाता है तो Simplecov कुछ लाइनों को याद कर सकता है।

(j)ruby --debug -S rspec spec 

--debug विकल्प के साथ यह काम किया और मैं उम्मीद के अनुसार 100% कवरेज पर वापस आ गया।