2012-04-12 24 views
19

, ben:Rspec: nasıl bir yardımcıda spec request.env? benim yardımcı modülünde

Benim Spec dosyasında
def abc(url) 
    ... 
    if request.env['HTTP_USER_AGENT'] 
    do something 
    end 
end 

, ben:

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

Nasıl:

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 

Ben spec çalıştırdığınızda bu hatayı var İsteklerim için request.env ['...'] etiketini koyar mıyım?

Teşekkürler.

cevap

10

Eh, alakası yok ettik:

before(:each) do 
    @meth = :abc 

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

Sadece bu başka bir deneyin verdi ve bu geçirir:

+0

olsa ... yardımcı gözlük asla güvenilir kontrolör özellikleri yapıyoruz. Cevabınız için – apneadiving

+0

teşekkürler. Evet bunu daha önce denedim ama yardımcı özellikler konusunda çalışmadı (en azından benim durumumda). – RoundOutTooSoon

+2

tek bir kolay çözüm yardımcınızdaki yöntemlere koşul çıkarmak ve bu yöntemleri saplamak olacaktır – apneadiving

1

bu deneyin:

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

15

rspec-rails kullanıyorsanız, controller.request'u kullanabilirsiniz. yardımcı testler.

5

Aşağıdakileri yaparak env isteğinde bulunan kullanıcı aracısını geçersiz kılabilirsiniz.

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

Ardından, spec:

it "does stuff" do 
    expect(helper.send(@meth, "some_url")).to # ... 
end 
İlgili konular