2011-08-16 17 views
22

द्वारा विभाजित आरएसपीसी परीक्षण मेरे पास एक दृश्य कल्पना है जो गुज़र रही थी लेकिन अब टूट गई है कि उस अंकन (कामिनरी मणि के माध्यम से) को दृश्य में जोड़ा गया है। मैं अभी भी आरएसपीईसी के वाक्यविन्यास के चारों ओर अपना सिर लेने की कोशिश कर रहा हूं ... इसलिए ब्राउज़र को ठीक से काम करने के लिए इसे प्राप्त करने में सहायता की तलाश है। मुझे पता है कि कई लोगों को भंगुर किया जा रहा है (शायद इस तरह के कारणों के लिए) के लिए दृश्य चश्मा पर भ्रूभंग कर रहा हूँ लेकिन मैं अभी भी यह एक गुजरअंकन (Kaminari)

मैं कुछ @posts सरणी के लिए पदों टोंटदार बताए रहा रखने के लिए करना चाहते हैं। लेकिन सरणी current_page का जवाब नहीं देती है। तो मैं इसे आरएसपीईसी में कैसे संभालना चाहिए?

Failures: 

    1) posts/index.html.haml renders a list of posts 
    Failure/Error: render 
    ActionView::Template::Error: 
     undefined method `current_page' for #<Array:0x000001028ab4e0> 
    # ./app/views/posts/index.html.haml:31:in `_app_views_posts_index_html_haml__291454070937541541_2193463480' 
    # ./spec/views/posts/index.html.haml_spec.rb:39:in `block (2 levels) in <top (required)>' 

spec/views/posts/index.html.haml_spec.rb:

require 'spec_helper' 

describe "posts/index.html.haml" do 
    before(:each) do 
    ... 
    assign(:posts, [ 
     Factory.stub(:post), 
     Factory.stub(:post) 
    ])  
    view.should_receive(:date_as_string).twice.and_return("June 17, 2011") 
    ... 
    end 

    it "renders a list of posts" do 
    render 
    rendered.should have_content("June 17, 2011") 
    ... 
    end 
end 
+1

मैं तुम्हें पहले से ही पता एक और जवाब स्वीकार किया, लेकिन मुझे चिंता है कि बी y ने उस स्टबिंग कर रहे हैं जो आपने किया था कि आपने बस अपने कोड में एक बग स्टब किया है। उपर्युक्त त्रुटि का तात्पर्य है कि आप अपने नियंत्रक में @ posts.current_page को कॉल कर रहे हैं। मैं @ post.first.current_page या controller.current_page मान्य होने पर देख सकता हूं, लेकिन शायद @ posts.current_page नहीं है। –

+0

अच्छा बिंदु! तो, क्या मुझे शायद नियंत्रक को बाहर निकालना चाहिए? मुझे पूरी तरह से यकीन नहीं है कि कामिनरी को 'current_page' पर कॉल करने की उम्मीद है?! मुझे केवल इतना पता था कि spec * विफल रहा था क्योंकि पोस्ट सरणी इसका जवाब नहीं देती है ... लेकिन, आप सही हैं, यह अजीब लगता है? * मैं यह देखने के लिए थोड़ा सा छोड़ दूंगा कि एक बेहतर उत्तर स्वयं प्रस्तुत करता है या नहीं। * – Meltemi

+0

क्या आप प्रासंगिक नियंत्रक कोड भी पोस्ट कर सकते हैं? –

उत्तर

44

आप नीचे की तरह कुछ कर सकते हैं:

assign(:posts, Kaminari.paginate_array([ 
     Factory.stub(:post), 
     Factory.stub(:post) 
     ]).page(1)) 
+2

यह विधि रेल स्कैफोल्ड कोड को अच्छी तरह से फिट करती है। जेनरेटेड stub_model सरणी को Kaminari.paginate_array (...) के साथ लपेटें। पृष्ठ (1) और व्हायोला! काम कर रहे चश्मा। – scarver2

+1

'Kaminari.paginate_array (...)। पृष्ठ (1) 'मेरे मामले में भी काम करता है –

16

आप व्यवहार ठूंठ चाहिए, इस कोशिश:

before(:each) do 
    ... 
    posts = [Factory.stub(:post), Factory.stub(:post)] 
    posts.stub!(:current_page).and_return(1) 
    posts.stub!(:total_pages).and_return(2) 
    assign(:posts, posts)  
    view.should_receive(:date_as_string).twice.and_return("June 17, 2011") 
    ... 
end 
+3

शानदार! धन्यवाद! किसी और के लिए देखकर मुझे भी दो अन्य विधियों को 'st_bages' और ': limit_value' को उसी तरह से बाहर करना था जैसा कि': current_value' ऊपर है ... और मैं जिस मान के लिए लौट रहा हूं वह एक पूर्णांक है '(1)'। चश्मा तैराकी से गुजर रहा है ... धन्यवाद! – Meltemi

+0

ठीक * मैं * आपको +1 कर दूंगा। मैं हरे रंग की चेकमार्क नहीं कर सकता हालांकि :( – jaydel

+1

मुझे भी 'total_pages' stub करना था। धन्यवाद! –

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