2012-10-25 25 views
9

परीक्षण के लिए नया, मैं कुछ नियंत्रक परीक्षण पास करने के लिए संघर्ष कर रहा हूं।रुपेक नियंत्रक त्रुटि <"index"> की उम्मीद है लेकिन <"">

expecting <"index"> but rendering with <""> 

मैं अपने नियंत्रक चश्मा में से एक में निम्नलिखित है:

निम्नलिखित नियंत्रक परीक्षण त्रुटि फेंकता

require 'spec_helper' 

    describe NasController do 

    render_views 
    login_user 

    describe "GET #nas" do 
     it "populates an array of devices" do 
     @location = FactoryGirl.create(:location) 
     @location.users << @current_user 
     @nas = FactoryGirl.create(:nas, location_id: @location.id)  
     get :index 
     assigns(:nas).should eq([@nas]) 
     end 

     it "renders the :index view" do 
     response.should render_template(:index) 
     end 
    end 

मेरी नियंत्रक मैक्रो में, मैं यह है:

def login_user 
    before(:each) do 
     @request.env["devise.mapping"] = Devise.mappings[:user] 
     @current_user = FactoryGirl.create(:user) 
     @current_user.roles << Role.first 
     sign_in @current_user 
     User.current_user = @current_user 
     @user = @current_user 
     @ability = Ability.new(@current_user) 
    end 
    end 

मैं तैयार और उपयोग कर रहा हूं और फिर अपने गाइड का पालन कर रहा हूं। परिक्षण। मेरा मानना ​​है कि मेरे उपयोगकर्ता पहले से साइन इन हैं और इंडेक्स एक्शन देखने की क्षमता रखते हैं।

परीक्षा उत्तीर्ण करने के लिए मैं क्या कर सकता हूं?

- अद्यतन 1 -

नियंत्रक कोड:

class NasController < ApplicationController 
    before_filter :authenticate_user! 
    load_and_authorize_resource 

    respond_to :js 

    def index 

    if params[:location_id] 
     ... 
    else 
    @nas = Nas.accessible_by(current_ability).page(params[:page]).order(sort_column + ' ' + sort_direction) 

    respond_to do |format| 
     format.html # show.html.erb 
    end  
    end 
    end 

उत्तर

14

मुझे लगता है कि अगर आप को बदलने

it "renders the :index view" do 
    response.should render_template(:index) 
end 

it "renders the :index view" do 
    get :index 
    response.should render_template(:index) 
end 

के लिए यह काम करना चाहिए।

अद्यतन: कोशिश इस

it "renders the :index view" do 
    @location = FactoryGirl.create(:location) 
    @location.users << @current_user 
    @nas = FactoryGirl.create(:nas, location_id: @location.id) 
    get :index 
    response.should render_template(:index) 
end 
+0

अरे। वह अभी भी विफल रहता है। इसे पहले कोशिश की - स्थान निर्माण को दोहराने की भी कोशिश की। इसे मत समझो एक ही परीक्षण दूसरे नियंत्रक में गुजरता है। – simonmorley

+0

क्या उनके नियंत्रक में कुछ ऐसा है जो आपको नाज़ तालिका खाली होने पर इंडेक्स लाने से रोकता है? –

+0

नहीं, और मैंने दोनों devise और cancan फ़िल्टर को हटाने का प्रयास किया है। और @nas = Nas.all के साथ ढूंढने की जगह बस मामले में। निराशा होती! – simonmorley

1

मैं अपने अंत पर इस त्रुटि को ठीक करने में कामयाब रहे, लेकिन कोई पता नहीं हम एक ही समस्या है तो।

मेरे सेटअप में, मेरे पास एक नियंत्रक मैक्रो था जो प्रत्येक प्रतिक्रिया प्रारूप (एचटीएमएल, जेएस, जेसन, आदि) के माध्यम से लूप करेगा और उस प्रारूप के तहत चश्मे का परीक्षण करेगा। बेवकूफ की तरह, मेरे पास अभी तक मेरे कुछ चश्मा के लिए अस्तित्व में एक जेसन प्रतिक्रिया टेम्पलेट नहीं था, और मुझे एहसास नहीं हुआ कि अगर यह वास्तव में टेम्पलेट नहीं ढूंढ पाता है तो यह एक त्रुटि फेंक देगा। तो यह मेरा मुद्दा था।

नीचे अपने चश्मा में एक प्रारूप निर्दिष्ट करने का प्रयास करें, और सही फ़ोल्डर में index.html नामक कुछ नकली टेम्पलेट लिखें और देखें कि आपको एक ही त्रुटि मिलती है या नहीं।

get :index, :format => "html" 
+0

सुझाव के लिए धन्यवाद। कोशिश की है लेकिन यह मेरे लिए काम नहीं करता है। मैं यह देखने जा रहा हूं कि क्या मैं इसे किसी अन्य नियंत्रक में काम करने और अंतर देखने के लिए प्राप्त कर सकता हूं। – simonmorley

+0

कम से कम मेरे मामले में, यह वास्तव में समस्या थी, सिवाय इसके कि मुझे "जेएस" की आवश्यकता है। – Karen