Ответ 1
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 для последнего запроса, а не ответ. Вы можете установить файлы 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 перед каждым запросом.