Raf :: Test, isteklerin üzerine devam eden bir çerez kavanozu saklar. rack_mock_session.cookies
ile erişebilirsiniz. adından da anlaşılacağı gibi
it 'defines a cookie' do
get '/'
rack_mock_session.cookie_jar["foo"].should == "bar"
end
Ayrıca last_request.cookies
ile çerezleri erişmek, ancak, içerdiği:
get '/cookie/set' do
response.set_cookie "foo", :value => "bar"
end
Şimdi böyle bir şey ile test edebilirsiniz: Diyelim ki böyle bir işleyici var diyelim son istek için çerez, yanıt değil. set_cookie
ile çerezleri ayarlayabilir ve clear_cookies
ile temizleyebilirsiniz.
it 'shows how to set a cookie' do
clear_cookies
set_cookie "foo=quux"
get '/'
last_request.cookies.should == {"foo" => "quux"}
end
Güncelleme: çerez kavanoz testi olguda (it
blok) karşısında kalıcı olmasını isterseniz, herhangi test durumları çalıştırmadan önce Raf oturumu başlatmak gerekiyor. Bunu yapmak için, bu before
kancasını describe
bloğunuza ekleyin.
before :all do
clear_cookies
end
Alternatif, örneğin her istek önce gerekli çerezlere kurmak için before :each
kullanabilirsiniz.
Tamam, şimdi görüyorum ki bu tanımlama bilgisi uygun şekilde ayarlanmış, ancak geçerli bir tanımlama bilgisi gerektiren bir rota isteğinde bulunduğumda - hata aldım. (çerez ayarlanmamışsa veya yanlış ise sunucu 401 hatası döndürür) – Andoriyu
UPD. rack_mock_session.cookie_jar ["foo"] sadece bir mesajda boş değil, sonraki testte boş. – Andoriyu
UPD. Çerezleri global varda saklayarak çalıştı, böylece her istekten önce çerez ayarlıyorum. – Andoriyu