加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用饼干与Rack :: Test

发布时间:2020-12-16 21:46:48 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Rack :: Test为我的Sinatra应用程序编写RSpec测试.我无法理解我如何使用cookies.例如,如果我的应用程序设置了cookie(不是通过:session),我该如何检查该cookie是否正确设置? 此外,如何使用该Cookie发送请求? 解决方法 Rack :: Test保留一个
我正在尝试使用Rack :: Test为我的Sinatra应用程序编写RSpec测试.我无法理解我如何使用cookies.例如,如果我的应用程序设置了cookie(不是通过:session),我该如何检查该cookie是否正确设置?

此外,如何使用该Cookie发送请求?

解决方法

Rack :: Test保留一个持续存在请求的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访问cookies,但是如名称所示,它包含上次请求的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保持测试用例(阻止),则需要在执行任何测试用例之前初始化Rack会话.要做到这一点,在挂钩到你的描述块之前添加它.

before :all do
    clear_cookies
end

替代方案,您可以使用之前:每个在每个请求之前设置必要的Cookie.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读