2012-09-20 45 views
15

यह देखते हुए कि मेरे पास एप्लीकेशनहेल्पर मॉड्यूल में full_title विधि है, मैं इसे आरएसपीईसी अनुरोध spec में कैसे एक्सेस कर सकता हूं?क्या मैं आरएसपीईसी अनुरोध में एप्लिकेशन हेल्पर विधियों तक पहुंच सकता हूं?

मैं अब निम्नलिखित कोड:

NoMethodError: undefined method full_title' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000003d43138>

0123:

app/helpers/application_helper.rb

module ApplicationHelper 

    # Returns the full title on a per-page basis. 
    def full_title(page_title) 
     base_title = "My Site title" 
     logger.debug "page_title: #{page_title}" 
     if page_title.empty? 
     base_title 
     else 
     "#{page_title} - #{base_title}" 
     end 
    end 

spec/requests/user_pages_spec.rb

require 'spec_helper' 

    describe "User Pages" do 
     subject { page } 

     describe "signup page" do 
      before { visit signup_path } 

      it { should have_selector('h2', text: 'Sign up') } 
      it { should have_selector('title', text: full_title('Sign Up')) } 

     end 
    end 

इस कल्पना चल रहा है, मैं इस त्रुटि संदेश मिलता है

माइकल हार्टल के Rails Tutorial में परीक्षणों के अनुसार, मुझे अपने उपयोगकर्ता spec में एप्लिकेशन सहायक विधियों तक पहुंचने में सक्षम होना चाहिए। मैं यहाँ क्या गलती कर रहा हूँ?

+0

मैं ठीक उसी राशि कोड और यह मेरे लिए काम करता है। क्या आप अपने त्रुटि संदेश में अधिक जानकारी जोड़ सकते हैं? साथ ही, क्या आपके पास एक जिथब रेपो है जिसे आप साझा कर सकते हैं? –

+0

क्या आपने अपनी 'utilities.rb' फ़ाइल को सहायक' के साथ अपनी 'spec/support' निर्देशिका में बनाया है? – veritas1

+0

मैंने [आपका कोड] (https://github.com/movingahead/sample_app) चेक किया और सभी चश्मे पास हुए। क्या आपने अपना डेटाबेस माइग्रेट किया था और स्पार्क को पुनरारंभ नहीं किया था? –

उत्तर

2

पुस्तक के 5.26 के अनुसार spec/support/utilities.rb में सहायक बनाएं।

+4

संभवतः, यह application_helper.rb में है क्योंकि आप इसे अपने एप्लिकेशन में उपयोग करना चाहते हैं। इसे spec में ले जाना/इसे रोक देगा, और इसे कॉपी करना बहुत DRY नहीं है। Nultyi बेहतर दृष्टिकोण है। – Brandon

+1

हां यह है, अगर सहायक विधि के लिए एक नमूना है। – veritas1

33

एक अन्य विकल्प spec_helper

RSpec.configure do |config| 
    ... 
    config.include ApplicationHelper 
end 
4

मैं Ruby on Rails Tutorial कर रहा हूँ में सीधे शामिल करने के लिए है (4.0 संस्करण रेल) ​​प्रत्येक मणि की वर्तमान-नवीनतम संस्करण का उपयोग कर। मुझे एक समान समस्या का अनुभव हुआ कि चश्मा में एप्लिकेशनहेल्पर को कैसे शामिल किया जाए। मैं निम्नलिखित कोड के साथ काम मिल गया:

कल्पना/rails_helper.rb

RSpec.configure do |config| 
    ... 
    config.include ApplicationHelper 
end 

कल्पना/अनुरोध/user_pages_spec.rb

require 'rails_helper' 

describe "User pages", type: :feature do 
    subject { page } 

    describe "signup page" do 
    before { visit signup_path } 

    it { is_expected.to have_selector('h2', text: 'Sign up') } 
    it { is_expected.to have_selector('title', text: full_title('Sign Up')) } 
    end 
end 

Gemfile

... 
# ruby 2.2.1 
gem 'rails', '4.2.1' 
... 
group :development, :test do 
    gem 'rspec-rails', '~> 3.2.1' 
    ... 
end 

group :test do 
    gem 'capybara', '~> 2.4.4' 
    ... 
+1

इसे स्वीकार किया जाना चाहिए उत्तर: DRY – yamori