2012-06-05 9 views
16

के साथ एक लिंक के लक्ष्य विशेषता का परीक्षण करना मैं रेल/आरएसपीसी/कैपिबरा के लिए थोड़ा नया हूं, इसलिए यह शायद एक नौसिखिया सवाल है, लेकिन Google ने जितनी उम्मीद की थी उतनी मदद नहीं की। मुझे उम्मीद थी कि मैंकैपिबारा/आरएसपीसी

it { should have_link('link text', href: 'url', target: '_blank') } 

इस्तेमाल कर सकते हैं कि एक नई विंडो में खोलने चाहिए एक कड़ी के लिए एक परीक्षण लिखने के लिए है, लेकिन यह काम करने के लिए प्रतीत नहीं होता।

it { should have_link('link text', {href: 'url', target: '_blank'}) } 

परीक्षण हमेशा उपस्थिति या वास्तविक पृष्ठ में लक्ष्य विशेषता और लिंक के मूल्य की परवाह किए बिना सफल होगा परीक्षण किया जा रहा है: मैं भी घुंघराले-ब्रेसिज़ में विकल्प हैश लपेटकर कोशिश की है। Href विशेषता को बदलने से अपेक्षित परीक्षण विफलता होती है। मैंने सोचा है कि है_लिंक के लिए विकल्प हैश परीक्षण के लिए गुणों की एक सूची थी। जाहिर है, मैं गलत हूं, लेकिन इसके लक्ष्य विशेषता के लिए एक लिंक का परीक्षण करने का सबसे अच्छा तरीका क्या है? उम्मीद है कि यह XPath खोज का उपयोग नहीं करना है ...

उत्तर

25

मुझे यकीन नहीं है कि आपका कोड क्यों काम नहीं करता है।

find_link('link_text')[:href].should == 'url' 
find_link('link_text')[:target].should == '_blank' 
6

आप कर सकता है::

is_expected.to have_link('link_text', href: 'url') 
expect(find_link('link_text')[:target]).to eq('_blank') 
7

नई rspec 3 वाक्य रचना का उपयोग करते हुए आप इस की कोशिश की है '_blank':

RSpec::Matchers.define :have_link_open_in_new_window do |locator, options={}| 
    match do |page| 
    link = page.find_link(locator, options) 
    link && link[:target] == '_blank' 
    end 
end 

का उपयोग करें क्योंकि आप have_link(locator, options):

expect(page).to have_link_open_in_new_window('Link text or id', href: '...') 
का उपयोग करेंगे
0

कि लिंक पाता है और जाँच करता है अपने target विशेषता है एक कस्टम मिलान परिभाषित करें:

it { should have_css "a[href~='/somewhere'][target~='_blank']" } 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^