gpt4 book ai didi

ruby-on-rails-3 - 我如何在 rails rspec 中测试 cookie 的过期时间

转载 作者:行者123 更新时间:2023-12-03 22:12:17 24 4
gpt4 key购买 nike

在 rspec 中设置 cookie 有很多困惑
http://relishapp.com/rspec/rspec-rails/v/2-6/dir/controller-specs/file/cookies

在你的 Controller 中,通常你可以写

cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }

但在 rspec 中我只能写
request.cookies['transaction_code'] = transaction_code

如果我说
request.cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }

我将哈希值作为 cookie['transaction_code'] 的值返回到我的 Controller 中。

现在我的问题是:如何在 rspec Controller 测试示例中设置/测试 cookie 到期?

更新:秒想:我的意思是:我如何测试 Controller 是否按预期对过期的 cookie 使用react,但实际上,如果我信任 cookie 实现,过期的 cookie 就像没有 cookie,我应该这样做,所以毕竟也许我的问题没有意义。如果是这种情况,我需要测试(另一个) Controller 操作是否正确设置了过期 cookie,但是如果测试中的 cookie['transaction_code'] 只返回值,我该怎么做?

最佳答案

浏览器 do not send cookie attributes back to the server .这就是为什么您只能将键值对发送到操作。

由于您可以假设 Rails、Rack 和浏览器使用参数做正确的事情,因此您真正需要测试的是您的代码传递给 CookieJar 的参数。 .

要测试在设置 cookie 的 Controller 中是否正确设置了到期时间,您可以删除 #cookies方法并确保将正确的设置传递给它。

# app/controllers/widget_controller.rb
...
def index
cookies[:expiring_cookie] = { :value => 'All that we see or seem...',
:expires => 1.hour.from_now }
end
...

# spec/controllers/widget_controller_spec.rb
...
it "sets the cookie" do
get :index
response.cookies['expiring_cookie'].should eq('All that we see or seem...')
# is but a dream within a dream.
# - Edgar Allan Poe
end

it "sets the cookie expiration" do
stub_cookie_jar = HashWithIndifferentAccess.new
controller.stub(:cookies) { stub_cookie_jar }

get :index
expiring_cookie = stub_cookie_jar['expiring_cookie']
expiring_cookie[:expires].to_i.should be_within(1).of(1.hour.from_now.to_i)
end
...

比这更多的测试正在沸腾海洋。在某些时候,您必须假设您所在的堆栈(例如 Rails、Rack、Web 服务器、TCP/IP、操作系统、Web 浏览器等)工作正常,并专注于您控制的代码。

关于ruby-on-rails-3 - 我如何在 rails rspec 中测试 cookie 的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492659/

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