gpt4 book ai didi

ruby - 在 Rack::Test 中使用 Cookie

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:12 25 4
gpt4 key购买 nike

我正在尝试使用 Rack::Test 为我的 Sinatra 应用程序编写 RSpec 测试。我不明白如何使用 cookie。例如,如果我的应用程序设置了 cookie(不是通过 :session),我如何检查该 cookie 是否设置正确?

另外,我如何使用该 cookie 发送请求?

最佳答案

Rack::Test 保留一个 cookie jar,该 cookie jar 在请求期间持续存在。您可以使用 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

您还可以使用 last_request.cookies 访问 cookie,但顾名思义,它包含最后一个请求的 cookie,而不是响应。您可以使用 set_cookie 设置 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 jar 在测试用例中持续存在(it block ),您需要在执行任何测试用例之前初始化 Rack session 。为此,请将此 before Hook 添加到您的 describe block 。

before :all do
clear_cookies
end

或者,例如,您可以使用 before :each 在每个请求之前设置必要的 cookie。

关于ruby - 在 Rack::Test 中使用 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5335183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com