Rack :: Test хранит банку cookie, которая сохраняется при запросах. Вы можете получить к нему доступ rack_mock_session.cookies
. Допустим, у вас есть такой обработчик:
get '/cookie/set' do
response.set_cookie "foo", :value => "bar"
end
Теперь вы можете проверить это примерно так:
it 'defines a cookie' do
get '/'
rack_mock_session.cookie_jar["foo"].should == "bar"
end
Вы также можете получить доступ к файлам cookie с помощью last_request.cookies
, но, как следует из названия, они содержат файлы cookie для последнего запроса, а не ответа. Вы можете установить куки с помощью set_cookie
и очистить их с помощью clear_cookies
.
it 'shows how to set a cookie' do
clear_cookies
set_cookie "foo=quux"
get '/'
last_request.cookies.should == {"foo" => "quux"}
end
Обновление: Если вы хотите, чтобы файл cookie сохранялся в тестовых случаях (блоки it
), вам необходимо инициализировать сеанс Rack перед выполнением любых тестовых случаев. Для этого добавьте этот before
хук в ваш блок describe
.
before :all do
clear_cookies
end
В качестве альтернативы вы можете, например, использовать before :each
для установки необходимых файлов cookie перед каждым запросом.