2012-04-22 11 views
8

में पाठ के साथ अपेक्षित सीएसएस "शीर्षक" रेल में वेब्रेट के स्थान पर कैपिबरा का उपयोग कर रहा हूं। मैंने capybara स्थापित किया है और Gemfile में मणि 'capybara' का उपयोग करें। जब मैंकैपिबरा

page.should have_selector("title", :text => "anything title") 

का उपयोग यह नीचे के रूप में है एक त्रुटि

Failure/Error: page.should have_selector("title", :text => "anything title") 
expected css "title" with text "anything title" to return something 

परीक्षण फ़ाइल देना है:

require 'spec_helper' 

describe "Test pages" do 
    describe "Home page" do  
    it "should have the content 'Demo App'" do 
    visit '/test_pages/home'  
    page.should have_selector("title", :text => "anything title")    
    end 
end 
end 
+1

क्या आपने कैपिबरा को क्या देख रहा है यह देखने के लिए आपके परीक्षण दावे से ठीक पहले 'save_and_open_page'' करने का प्रयास किया है? – nmott

उत्तर

12
नहीं

यकीन है कि रत्नों का उपयोग कर रहे का कौन सा संस्करण है, लेकिन मैं एक ऐसी ही उदाहरण में भाग जहां उपयोग कर रहा है: टेक्स्ट असफल रहा लेकिन जब मैंने उपयोग किया: सामग्री ने इसे परीक्षा उत्तीर्ण की। मैं रेल 3.2.3, आरएसपीसी-रेल 2.9.0, कैपिबरा 1.1.2 और उबंटू ल्यूसिड लिंक्स पर थ्यूब्यराइज़र रत्न का उपयोग कर रहा हूं।

कोशिश

page.should have_selector("title", :content => "anything title") 
+0

हे! मैं उमंटू और साथ ही विंडोज़ पर मणि 'रेल', '3.2.3', मणि 'आरएसपीसी-रेल', '2.9.0', और मणि 'कैपिबरा', '1.1.2' का उपयोग कर रहा हूं। मैंने उपयोग किया है: सामग्री और यह ठीक काम कर रहा है! धन्यवाद। – vajapravin

+0

खुशी है कि यह काम करता है लेकिन मुझे तब से मिल गया है: काम करने के लिए पाठ और दस्तावेज़ीकरण के अनुसार: टेक्स्ट ऐसा करने का सही तरीका है। मेरे पास मशीन में भूत था क्योंकि मैं इस मुद्दे को फिर से नहीं बना सकता। देखें [rubydoc: Capybara :: RSpecMatchers # have_selector] (http://rubydoc.info/github/jnicklas/capybara/Capybara/RSpecMatchers#have_selector-instance_method) – rbnewb

+0

मुझे एक ही समस्या है। किसी कारण से, केवल शीर्षक तत्व पर, 'सामग्री' काम करता है लेकिन ': text' नहीं ... बहुत अजीब है। –

1

साथ

page.should have_selector("title", :text => "anything title") 

की जगह मैं एक ऐसी ही समस्या है, बस आपको यह बताने के, के उपयोग: सामग्री Capybara में समर्थित नहीं है, यह होना चाहिए: पाठ।

समस्या के साथ: सामग्री यह है कि यह कैपिबरा द्वारा मान्यता प्राप्त नहीं है और फिर इसे अनदेखा और PASSED के रूप में दिखाया जाता है, लेकिन यह एक गलत व्यवहार है।

तो यदि आप Capybara का उपयोग करते हैं, तो प्रत्येक को स्विच करें: सामग्री को देखने के लिए: पाठ वास्तव में पास हो जाता है या नहीं, शायद त्रुटियां नहीं देखी गई हैं।

4

समस्या यह है कि ब्राउज़र <title> टैग अदृश्य होने के साथ व्यवहार करते हैं। (इस विषय पर issue से जोड़ने के लिए DreadPirateShawn धन्यवाद)।

कोई 'साफ़' जिस तरह से शीर्षक प्राप्त करने के लिए नहीं है, लेकिन एक हैक का एक सा के साथ आप अभी भी करने से शीर्षक के मूल्य का परीक्षण कर सकते हैं:

first('head title').native.text.should == "WhateverYourTitleNeedsToBe" 

क्योंकि उससे अधिक आयु के :content प्रतीक का उपयोग न करें कैपिबरा के संस्करणों के अमान्य टैग को अनदेखा कर दिया जाएगा और ऐसा लगता है कि आपका परीक्षण बीत चुका है या नहीं। नया संस्करण आपको एक अच्छा त्रुटि संदेश देगा:

ArgumentError: invalid keys :content, should be one of :text, :visible, :between, :count, :maximum, :minimum

+0

मेरा मानना ​​है कि सबसे साफ तरीका शीर्षक प्राप्त करने के लिए xpath का उपयोग करना है। इस तरह: 'page.find: xpath,' // title ', दृश्यमान: false' – etagwerker

0

मुझे एक ही समस्या का सामना करना पड़ा। अनुभव निम्नलिखित मैं क्या पाया है: अगर आप का उपयोग करें, हालांकि

<title text="AnyTitle"/> 

:

page.should have_selector("title", :text => "AnyTitle") 

अपने html आउटपुट के रूप में नीचे टैग को शामिल करने की उम्मीद करेंगे के बजाय सामग्री: नीचे के रूप में पाठ

page.should have_selector("title", :content => "AnyTitle") 

तो यह अपने html उत्पादन नीचे के रूप में एक टैग को शामिल करने की उम्मीद होगी

<title>AnyTitle</title> 

तो यदि आपके परिणामी एचटीएमएल प्रतिपादन में <title text="AnyTitle"/> टैग शामिल है, तो आपको इसका उपयोग करना चाहिए: टेक्स्ट अन्यथा यदि आपके परिणामी एचटीएमएल प्रतिपादन में <title>AnyTitle</title> टैग है, तो आप इसके बजाय सामग्री का उपयोग करना चाहेंगे।

पीएस मेरी रत्न वातावरण: capybara-2.0.2, रेल-3.2.12, rspec-रेल-2.12.2, webrat-0.7.3 निकालें webrat, तो अगर ": conetnt" कुंजी शब्द Capybara से अपरिचित है अकेला।

लेकिन यह तय करने के लिए स्वच्छ तरीका है: webrat से छुटकारा पाने और एक स्थिर Capybara-1.1.2 स्थापित करते हैं, कि Gemfile

#gem webrat 
gem 'capybara', '1.1.2' 

में है prusswan's answer

0

का संदर्भ लें बस करना यह:

expect(page).to have_title("some title")