2012-04-12 7 views
19

मेरी सहायक मॉड्यूल में, मेरे पास है:रुपयेपेक: एक सहायक नमूने में request.env spec कैसे करें?

def abc(url) 
    ... 
    if request.env['HTTP_USER_AGENT'] 
    do something 
    end 
end 

मेरी कल्पना फ़ाइल में, मेरे पास है:

undefined local variable or method `request' for <ObjectWithDocHelperMixedIn:0x00000103b5a7d0> 

कैसे:

describe "#abc" do  
before(:each) do 
    @meth = :abc 

    helper.request.env['HTTP_USER_AGENT'] = "..." 
end 
it "should return the webstart jnlp file" do 
    @obj.send(@meth, "some_url").should .... 
end 
end 

मैं यह त्रुटि है जब मैं कल्पना चलाने क्या मैं अपने चश्मा में request.env ['...'] के लिए stub?

धन्यवाद।

उत्तर

10

ठीक है, तुम लगभग कुछ भी नहीं है ऐसा करने के लिए:

before(:each) do 
    @meth = :abc 

    request.env['HTTP_USER_AGENT'] = "..." 
end 

मैं सिर्फ यह एक और कोशिश दे दी है और इस से गुजरता है:

+0

मैं नियंत्रक चश्मा हालांकि ... सहायक चश्मा में की कोशिश कभी नहीं में करते हैं। – apneadiving

+0

आपके उत्तर के लिए धन्यवाद। हाँ मैंने पहले भी कोशिश की लेकिन यह सहायक चश्मे में काम नहीं किया (कम से कम मेरे मामले में)। – RoundOutTooSoon

+2

एक आसान कामकाज आपके सहायक में विधियों को स्थिति निकालने और उन तरीकों को रोकने के लिए होगा – apneadiving

1

इस प्रयास करें:

stub(request).env { {"HTTP_USER_AGENT" => "Some String"} }

15

यदि आप rspec-rails का उपयोग कर रहे हैं, तो आप अपने controller.request का उपयोग कर सकते हैं सहायक परीक्षण

5

आप निम्नलिखित करने के द्वारा अनुरोध env में उपयोगकर्ता-एजेंट सेट को ओवरराइड कर सकते हैं।

before(:each) do 
    @meth = :abc 
    helper.request.user_agent = 'something else' 
end 

फिर, अपनी कल्पना में:

it "does stuff" do 
    expect(helper.send(@meth, "some_url")).to # ... 
end 
संबंधित मुद्दे