2011-09-01 9 views
7

मेरे पास एक रेल 3.1 एप्लिकेशन है जिसे एक विश्वसनीय API के रूप में बनाया जा रहा है। योजना प्राधिकरण HTTP शीर्षलेख के माध्यम से प्रत्येक अनुरोध पर पारित एपीआई कुंजी के आधार पर प्रमाणीकरण को संभालना है।RSpec.configure और अनुरोध ऑब्जेक्ट

RSpec.configure do |config| 
    config.mock_with :rspec 
    config.use_transactional_fixtures = true 
    config.before(:each) do 
    # Set API key in Authorization header 
    request.env["HTTP_AUTHORIZATION"] = "6db13cc8-815f-42ce-aa9e-446556fe3d72" 
    end 
end 

दुर्भाग्य से, यह एक अपवाद है क्योंकि request वस्तु config.before ब्लॉक में मौजूद नहीं है फेंकता है: आदेश RSpec में यह परीक्षण करने के लिए, मैं config.before ब्लॉक में request.env["HTTP_AUTHORIZATION"] विशेषता निर्धारित करना चाहता था।

सहित प्रत्येक शीर्ष नियंत्रक परीक्षण फ़ाइल के before ब्लॉक में इस हेडर को सेट करने के लिए कोई और तरीका है?

उत्तर

2

मैं इसे अपने आप प्रयास नहीं किया है लेकिन शायद साझा बना कर उदाहरण समूह आपकी समस्या को सुलझाने के लिए आप मदद कर सकता है:

shared_examples_for "All API Controllers" do 
    before(:each) do 
    request.env["HTTP_AUTHORIZATION"] = "blah" 
    end 

    # ... also here you can test common functionality of all your api controllers 
    # like reaction on invalid authorization header or absence of header 
end 

describe OneOfAPIControllers do 
    it_should_behave_like "All API Controllers" 

    it "should do stuff" do 
    ... 
    end 
end 
संबंधित मुद्दे