2012-02-28 16 views
24

मैं रेल के लिए काफी नया हूं, और रेलस्टोरियल का पालन करने की कोशिश कर रहा हूं। सब कुछ ठीक हो जाता है मेरी परीक्षण जो अतीत नामित रास्तों (5.3.3)रुपये और नामित मार्ग

नहीं मिल सकता है के अलावा मेरे routes.rb:

SampleApp::Application.routes.draw do 

resources :users 
match '/signup', to: 'users#new' 

match '/help', to: 'static_pages#help' 
match '/about', to: 'static_pages#about' 
match '/contact', to: 'pages#contact' 

root to: 'static_pages#home' 

#Commented stuff 

मेरे बातें पहली बार परीक्षण (कल्पना/नियंत्रक/static_pages_controller_spec। rb):

describe "Static pages" do 

subject { page } 

shared_examples_for "all static pages" do 
    it { should have_selector('h1', text: heading) } 
    it { should have_selector('title', text: full_title(page_title)) } 
end 

describe "Home page" do 
    before { visit root_path } 
    let(:heading) { 'Sample App' } 
    let(:page_title) { 'Home' } 

    it_should_behave_like "all static pages" 
end 

#Other tests 

spec_helper.rb सभी टिप्पणी की सामान के बिना (की तरह दिखता है)

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
    config.infer_base_class_for_anonymous_controllers = false 
end 
मैं पहले से ही spec_helper में

include Rails.application.routes.url_helpers 

उपयोग करने की कोशिश

Static pages Home page it should behave like all static pages 
Failure/Error: before { visit root_path } 
NameError: 
    undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1::Nested_1:0x00000004a12210> 
Shared Example Group: "all static pages" called from ./spec/controllers/static_pages_controller_spec.rb:17 
# ./spec/controllers/static_pages_controller_spec.rb:13:in `block (3 levels) in <top (required)>' 

, लेकिन यह

Static pages Home page it should behave like all static pages 
Failure/Error: Unable to find matching line from backtrace 
SystemStackError: 
    stack level too deep 
# /usr/lib/ruby/1.9.1/forwardable.rb:185 

करने के लिए मेरी त्रुटियों बदल दिया है: ०५३६९१३६३२१०

त्रुटियों मैं rspec से प्राप्त इस तरह सभी कर रहे हैं मैंने अपने मार्गों का नाम बदलने के विभिन्न तरीकों का भी प्रयास किया, लेकिन उनमें से कोई भी काम नहीं किया। मैं ट्यूटोरियल संस्करण पर वापस आ गया हूँ।

यदि यह वास्तव में कोई समस्या है, तो यह उबांटू 11.10 पर है, मैं रेल 3.2.1 और रूबी 1.9.2p290 के साथ हूं। आशा है कि आप मदद कर सकते हैं, मैं समाधान के लिए थोड़ी देर बिताता हूं और मुझे कोई ^^ '

उत्तर

101

नाम मार्गों काम करना चाहिए अगर आप rspec_helper.rb में निम्नलिखित डाल:

RSpec.configure do |config| 
    config.include Rails.application.routes.url_helpers 
    ... 
end 

आप उसके सेटअप है कि है?

+0

यह 'कॉन्फ़िगरेशन' को छोड़कर मैंने किया है। अंश। सब कुछ अब पूरी तरह से काम करता है! आपका बहुत बहुत धन्यवाद ! – FabPelletier

+7

यदि कोई इसे अभी तक बनाता है और अभी भी स्टंप हो जाता है, तो यह भी ध्यान देने योग्य है कि root_path (आदि) केवल आरएसपीईसी परीक्षणों के "वर्णन" ब्लॉक के भीतर "इसे" अंत "खंड" के "अंत" खंड में काम करता है । इसलिए यदि आपने फ़ंक्शन को पास किए गए पथ पैरामीटर के आधार पर "इसे" अनुभागों को संभालने के लिए फ़ंक्शंस बनाए हैं, तो आप फ़ंक्शन के पैरामीटर के रूप में root_path (आदि) को पास नहीं कर सकते हैं। – DreadPirateShawn

+0

इसने रेल्स 4.2 डिलीकेशन चेतावनी के मेरे मुद्दे को भी तय किया है 'अस्वीकरण चेतावनी: name_routes.helpers को बहिष्कृत किया गया है, कृपया रूट_डेफाइंड का उपयोग करें? (रूट_नाम) यह देखने के लिए कि कोई नामित मार्ग परिभाषित किया गया था, इसलिए अब जब तक मैं https की प्रतीक्षा नहीं करता तब तक मेरे पास आरएसपीईसी लॉग साफ़ है : //github.com/rspec/rspec-rails/pull/1142 रिलीज होने के लिए। –

2

नहीं लगता है कि मुझे लगता है कि आपके आरएसपीसी नियंत्रक चश्मा के अंदर नामित मार्गों तक पहुंच नहीं है। हालांकि आप केवल ('/') पर जा सकते हैं, जो root_path के बराबर है।

+0

धन्यवाद, यह अच्छी तरह से काम करता है और कर मेरी परीक्षण हरी जाना! हालांकि, ट्यूटोरियल नामित मार्गों का उपयोग करता है [Railstutorial.org] (http://ruby.railstutorial.org/chapters/filling-in-the-layout?version=3.2#code:static_pages_spec_shared_example) और मुझे जानकर उत्सुकता है कैसे ^^ – FabPelletier

+0

आपका स्वागत है बस ऊपर उठाना और जवाब स्वीकार करें तो कृपया! :) – TheDelChop

+0

उपवर्ग के लिए 15 प्रतिष्ठा की आवश्यकता है, क्षमा करें! मैं इसे स्वीकार करने से पहले थोड़ा इंतजार करूंगा, अगर किसी को वास्तव में यह पता चलता है कि इसे 'पुस्तक में कैसे' बनाना है :) – FabPelletier

2

आप

rails generate rspec:install 

बजाय

rspec --init 

उपयोग करना चाहिए और आप कॉन्फ़िग फ़ाइल को संशोधित करने की नहीं पड़ता था।

अभी यह मत करो या आपका आवेदन टूट जाएगा और आपको यह पता लगाने में कुछ और समय बर्बाद करना होगा कि यह क्यों टूट गया।

+7

लेकिन आपकी टिप्पणी वास्तव में एक समाधान नहीं है। ;-) – Tass

2

मुझे एक ही समस्या थी, उसी ट्यूटोरियल के साथ। यह पता चला है कि मुझे बस स्पार्क सेवा को पुनरारंभ करने की आवश्यकता है, और सभी ठीक काम करते हैं।

टॉम एल द्वारा पोस्ट किया गया समाधान मेरे लिए काम करता था, लेकिन जब मैंने उस रेखा को हटा दिया और स्पार्क को फिर से शुरू किया, तो उसने समस्या को भी ठीक किया।

आशा है कि ट्यूटोरियल के कोड से विचलित होने के बारे में सावधान रहने वाले किसी अन्य व्यक्ति की मदद करें!

+1

बहुत बहुत धन्यवाद! @ टॉम एल कोड मेरे लिए काम नहीं किया। तो यह बाद में स्पार्क की गलती है! मैंने अपनी पूरी दोपहर एक समाधान की तलाश में बिताया! आपका बहुत बहुत धन्यवाद! –

3

Google ने मुझे यहां लाया, यहां तक ​​कि मेरा त्रुटि संदेश 100% फिट नहीं है।

मेरे मामले में Capybara आदेश visit अज्ञात है ...

त्रुटि:

NoMethodError: 
     undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xa49a73c> 

Capybara 2.0 के बाद से एक फ़ोल्डर spec/features capybara आदेशों का उपयोग करने में अब फ़ोल्डर spec/requests में काम नहीं करते है।

जो मुझे मदद मिली: http://alindeman.github.com/2012/11/11/rspec-rails-and-capybara-2.0-what-you-need-to-know.html

आप इस उपयोगी पाते हैं आशा है कि।

4

rspec_helper.rb में:

RSpec.configure do |config| 
    config.include Rails.application.routes.url_helpers 
    ... 
end 
संबंधित मुद्दे