2012-09-19 10 views
5

किस पेज को देखा जा रहा है इसके आधार पर मैं अपने लोगो के लिए एक अलग छवि का उपयोग करना चाहता हूं; मुखपृष्ठ पर लोगो बड़ा है। मैं अनुरोध चश्मा का उपयोग कर पसंद व्यवहार का परीक्षण करने, इसलिए मैं कुछ इस तरह करना चाहते हैं:rspec का उपयोग करके कौन सी छवि प्रदर्शित की जा रही है इसका परीक्षण कैसे करें?

describe 'Visit "advertentie/1"' do 
    it 'contains add details' do 
     add = create(:add_with_photos) 
     visit add_path add 
     page.should have_selector('img[alt="logo-small"]') # CHECK IMAGE ALT 
     page.should have_content(add.name) 
    end 
end 

और परीक्षण के खिलाफ कुछ haml एचटीएमएल उत्पन्न चलाता है:

<div class='logo-wrapper'> 
    <h1> 
    <a href="/"><img alt="Logo-big" src="/assets/logo-small.png" /> 
    <br> 
    <span>UpMarket</span> 
    </a> 
    </h1> 
</div> 

हालांकि इस चयनकर्ता काम नहीं करता है । क्या यह संभव है, और कैसे?

+0

क्या प्रासंगिक HTML की तरह दिखता है (हर <img> तत्व जिसका src विशेषता मूल्य-स्ट्रिंग "w3schools" शामिल हैं का चयन करता है)? – jdl

+1

अच्छी तरह से 100% टीडीडी के लिए एचटीएमएल निश्चित रूप से कुछ भी नहीं दिखना चाहिए, लेकिन मैं एक खराब तरीका होगा और इसे मेरे प्रश्न में जोड़ दूंगा;) –

+1

टीडीडी का मतलब है कि आपके पास शून्य आउटपुट है। स्पष्ट रूप से कुछ HTML है कि 'have_selector' जांच कर रहा है (या वहां होना चाहिए)। मैं यही पूछ रहा था। – jdl

उत्तर

15

क्या आपने have_css विधि का प्रयास किया था?

have_css("img[src*='w3schools']") 

+0

ग्रीन चश्मा। प्यार करना चाहिए। धन्यवाद, src परीक्षण करने के लिए एक और अधिक विश्वसनीय विशेषता की तरह लग रहा था, क्योंकि मैं अल्ट्स को थोड़ा और वर्णनात्मक होना पसंद करूंगा। इसे '*' के साथ भी बहुत अधिक परिस्थितियों में उपयोग कर सकते हैं, वास्तव में इसका कभी भी उपयोग नहीं किया। –

+0

यह मेरे लिए काम करता है लेकिन '*' क्या करता है? मुझे लगता है कि इसे "स्प्लट" के रूप में इस्तेमाल किया जा रहा है लेकिन यह अलग दिखता है। धन्यवाद। – haley

+0

'* =' विशेषता चयनकर्ता का अर्थ है 'विशेषता में सबस्ट्रिंग शामिल है'। संभावित चयनकर्ताओं के एक सिंहावलोकन के लिए [w3schools] (http://www.w3schools.com/cssref/css_selectors.asp) देखें। – hjblok