2011-09-02 15 views
21

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

उदाहरण: user_controller_spec.rb में

it "should just post to users" do   
    post :create, @params # this goes to the users controller 
    end 

मैं की तरह कुछ करना चाहता हूँ:

it "should post to user and people to do some integration testing" do   
    post :create, @params # this goes to the users controller still 
    post 'people', :create, @params # this goes to the people controller 
    end 

पुनश्च: मैं सेटअप ककड़ी नहीं करना चाहती

उत्तर

28

नियंत्रक चश्मा रेल के कार्यात्मक परीक्षण के लिए रैपर हैं, जो एकाधिक अनुरोधों या नियंत्रकों का समर्थन नहीं करते हैं। आप जो चाहते हैं वह एक आरएसपीसी अनुरोध spec (रेल 3) या एकीकरण spec (रेल 2) है। ये रैप रेल एकीकरण परीक्षण, जो एकाधिक नियंत्रकों (एकाधिक सत्रों, यहां तक ​​कि) के साथ कई अनुरोधों का समर्थन करता है, लेकिन वे नियंत्रक चश्मा से थोड़ा अलग काम करते हैं। आपको पूर्ण पथ का उपयोग करना होगा (इसलिए new_thing_path प्राप्त करें), और आप नियंत्रक पर कुछ भी नहीं लगा सकते हैं (क्योंकि अनुरोध करने से पहले कोई नियंत्रक नहीं है)।

अधिक जानकारी के लिए http://relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec और http://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.html देखें।

3

यदि आप कॉल टेस्ट विधि से पहले @controller का मान निर्दिष्ट करते हैं तो एक तरीका है। उदाहरण

def setup 

    @controller = UserController.New 

    do user stuff 

    @controller = ThisController.New 

    do test intented for this controller 
end 
+0

भयानक! मेरे लिए बहुत अच्छा काम करता है। – Tilo

+0

मैं यह जांचना चाहता था कि यह कौन सा नियंत्रक मार रहा है, इससे थोड़ा सा मदद मिली। –

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