rspec

2010-10-19 18 views
9

के साथ पृष्ठ शीर्षक सत्यापित करना मैं माइकल हार्टल के Rails Tutorial के माध्यम से चल रहा हूं।rspec

मैं अपने पृष्ठ का शीर्षक सत्यापित करने का प्रयास कर रहा हूं। परीक्षण इस तरह दिखता है:

it "should have the right title" do 
     get 'home' 
     response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home") 
    end 

एचटीएमएल सिर अनुभाग इस

<head> 
    <title>Ruby on Rails Tutorial Sample App | Home</title> 
</head> 

तरह लग रहा है मैं निम्नलिखित विफलता

1) PagesController GET 'home' should have the right title Failure/Error: response.should have_selector("title", :content => "Ruby on Rails Tutorial Sample App | Home") expected following output to contain a Ruby on Rails Tutorial Sample App | Home tag: # ./spec/controllers/pages_controller_spec.rb:13:in `block (3 levels) in '

मैं इस पारित करने के लिए उम्मीद कर रहा हूँ हो रही है। मैं क्या गलत कर रहा हूं? मैं रेल 3 और आरएसपीसी 2.0.0

उत्तर

4

नियंत्रक चश्मा सामान्य रूप से पूर्ण दृश्य प्रस्तुत नहीं करते हैं, क्योंकि वे अलगाव में नियंत्रकों का परीक्षण करने का इरादा रखते हैं। आप Rspec बता उदाहरण समूह के शीर्ष पर निर्देश integrate_views शामिल करके पूरे पृष्ठ प्रस्तुत करने के लिए कर सकते हैं:

describe MyController do 
    integrate_views 

हालांकि आप अपने आप से पूछना चाहिए अगर तुम सच में ऐसा करना चाहते हैं, या अगर यह करने के लिए और अधिक समझ बनाने होगा दृश्य चश्मा लिखें।

btw आप भी कुछ कीस्ट्रोक को बचाने के लिए CSS3 चयनकर्ता सिंटैक्स का उपयोग कर सकते हैं (इस के लिए Webrat matchers शामिल करने के लिए आवश्यकता हो सकती है):

response.should have_selector("title:contains('Ruby on Rails Tutorial Sample App | Home')") 

संपादित

Rspec2 के लिए, साथ integrate_views की जगह render_views

+0

मैं शीर्ष पर integrate_views निर्देश डालने की कोशिश की, लेकिन अब मैं एक सिंटैक्स त्रुटि –

+2

ओह, आप पर Rspec 2. कोशिश होना चाहिए हो रही है 'render_views' । – zetetic

+0

धन्यवाद, शायद यह कहने के लिए अपना जवाब संपादित करें कि आपको रुपये 2 पर render_views का उपयोग करना चाहिए? –

0

मुझे दृढ़ता से संदेह है कि आपके पास कहीं टाइपो है।

इस समय के रूप में, मैं अध्याय 11 के व्यायाम 4 के माध्यम से काम कर रहा हूं। प्रत्येक, एक समस्या जो मैंने ट्यूटोरियल के साथ की है, मेरे हिस्से पर एक टाइपो बन गया है।

नोट: मैं काटने और पेस्ट नहीं कर रहा हूं। मैं हाथ से सभी कोड में छिद्रण कर रहा हूँ।

+0

मैंने कॉपी-पेस्ट चीज की है ... और जब मैं शीर्ष –

2

मुझे कैपिबरा में स्थानांतरित करना आसान लगता है (मैं रेल 3.0.1, रुपेक 2.0.1, रूबी 1.9.2 का उपयोग कर रहा हूं)। अब आप

page.should have_css('title', :text => 'Ruby on Rails Tutorial Sample App | Home') 
2

यह प्रश्न पुराना दिखता है, जो बताता है कि अब एक बेहतर तरीका क्यों है।

अच्छी तरह से काम करता है निम्नलिखित मेरे लिए:

it "has the correct page title", js: true do 
    visit "https://stackoverflow.com/users/sign_in" # for example 
    expect(page.title).to include "Sign In or Create a New Account" 
end 
+1

पर render_views डालता हूं तो यह पूरी तरह से काम करता है, इसके अलावा, आपको इस मामले में 'शामिल' विधि का उपयोग करते समय बहुत सावधान रहना चाहिए। यदि आपके पास शीर्षक में वह स्ट्रिंग है, तो यह गुजर जाएगी, हालांकि, अवांछित चीजें भी हो सकती हैं। मैं इस मामले में 'eq' विधि का उपयोग करने की अनुशंसा करता हूं, क्योंकि यह असफल हो जाएगा यदि यह सही स्ट्रिंग पास नहीं हो रहा है। –

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