2011-04-27 3 views
6

rspec-rails को आजमाएं। मुझे एक अजीब त्रुटि मिलती है - कोई मार्ग नहीं माना जाता है, भले ही मैं रेलों को चलाते समय ब्राउज़र में उन्हें ठीक से एक्सेस कर सकूं।rspec-rails: विफलता/त्रुटि: "/" कोई मार्ग मिलान नहीं

मैं भी बस/

Failure/Error: get "/" 
    ActionController::RoutingError: 
     No route matches {:controller=>"action_view/test_case/test", :action=>"/"} 

साथ इसे करने की कोशिश मैं निश्चित रूप से पहुँच/और, ब्राउज़र में अन्य संसाधनों हालांकि कर सकते हैं। क्या आरएसपीसी सेट करते समय मुझे कुछ याद आ सकता है? मैंने इसे Gemfile में रखा और rspec भाग गया: स्थापित करें।

धन्यवाद, MRB

संपादित करें:

myApp::Application.routes.draw do 

    resources :groups do 
    resources :projects 
    end 

    resources :projects do 
    resources :variants 
    resources :steps 

    member do 
     get 'compare' 
    end 
    end 

    resources :steps do 
    resources :costs 
    end 

    resources :variants do 
    resources :costs 
    end 

    resources :costs 

    root :to => "home#index" 

end 

मेरे spec_helper.rb:

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

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

RSpec.configure do |config| 

    config.mock_with :rspec 
    config.include RSpec::Rails::ControllerExampleGroup 


    config.fixture_path = "#{::Rails.root}/spec/fixtures" 


    config.use_transactional_fixtures = true 
end 

नहीं आया यहाँ अपने परीक्षण

1 require 'spec_helper' 
    2 
    3 describe "resource" do 
    4 describe "GET" do 
    5  it "contains /" do 
    6  get "/" 
    7  response.should have_selector("h1", :content => "Project") 
    8  end 
    9 end 
10 end 

यहाँ मेरी मार्ग फ़ाइल है वास्तव में नहीं मुझे कुछ भी बदलो, मुझे लगता है।

+0

अपनी मार्ग फ़ाइल पोस्ट करें? – tbaums

+0

क्या आप अपना spec_helper.rb पोस्ट कर सकते हैं? – moritz

उत्तर

4

जहां तक ​​मुझे पता है, आप दो परीक्षणों को एक साथ जोड़ने की कोशिश कर रहे हैं। आरएसपीईसी में इसे दो चरणों में हल किया जाना चाहिए। एक spec में आप रूटिंग का परीक्षण करते हैं, और दूसरे में आप नियंत्रक का परीक्षण करते हैं।

तो, एक फ़ाइल spec/routing/root_routing_spec.rb

require "spec_helper" 

describe "routes for Widgets" do 
    it "routes /widgets to the widgets controller" do 
    { :get => "/" }.should route_to(:controller => "home", :action => "index") 
    end 
end 

जोड़ने और फिर एक फ़ाइल spec/controllers/home_controller_spec.rb जोड़ने के लिए, और मैं विस्तारित matchers चाहिये या उल्लेखनीय द्वारा परिभाषित उपयोग कर रहा हूँ।

require 'spec_helper' 

describe HomeController do 

    render_views 

    context "GET index" do 
    before(:each) do 
     get :index 
    end 
    it {should respond_with :success } 
    it {should render_template(:index) } 

    it "has the right title" do 
     response.should have_selector("h1", :content => "Project") 
    end 

    end 
end 

वास्तव में, मैं लगभग render_views का उपयोग कभी नहीं, लेकिन हमेशा के रूप में संभव के रूप में अलग-थलग पड़ मेरी घटकों का परीक्षण करें। क्या दृश्य में मेरे दृश्य-spec में सही शीर्षक I परीक्षण है।

rspec का उपयोग करके मैं अलग-अलग घटक (मॉडल, नियंत्रक, विचार, रूटिंग) का परीक्षण करता हूं, और मैं सभी परतों के माध्यम से टुकड़े करने के लिए उच्च स्तरीय परीक्षण लिखने के लिए ककड़ी का उपयोग करता हूं।

उम्मीद है कि इससे मदद मिलती है।

+0

अच्छा! बस रूटिंग की कोशिश की और ऐसा लगता है! धन्यवाद! – MrB

2

आपको नियंत्रक परीक्षण के लिए describe नियंत्रक होना है। साथ ही, चूंकि आप नियंत्रक परीक्षण में दृश्य की सामग्री का परीक्षण कर रहे हैं और एक अलग दृश्य spec नहीं है, तो आपको render_views होना चाहिए।

describe SomeController, "GET /" do 
    render_views 

    it "does whatever" do 
    get '/' 
    response.should have_selector(...) 
    end 
end 
+0

यह या तो अभी भी असफल होने में मदद नहीं करता है। मैं वास्तव में विशेष रूप से एक नियंत्रक का परीक्षण करने की कोशिश नहीं कर रहा हूँ। मैं सिर्फ परीक्षण करना चाहता हूं कि मुझे सही दृश्य मिल जाए, तो मुझे लगता है कि यह एक नियंत्रक परीक्षण की तुलना में एक दृश्य परीक्षण है। या शायद सभी में एक। लेकिन न तो नियंत्रक को वर्णन में डालने और न ही 'render_views' डालने में मदद मिली :-( – MrB

+0

यदि यह एक दृश्य कल्पना है तो आपको किसी भी मार्ग तक नहीं पहुंचना चाहिए। Http://relishapp.com/rspec/rspec-rails देखें उदाहरण के लिए/v/2-5/dir/view-specs/view-spec। –