是否可以设置cookie何时在集成测试中到期?

时间:2016-01-25 00:10:29

标签: ruby-on-rails ruby-on-rails-4 testing cookies integration-testing

在集成测试中是否有办法操纵cookie的到期日期(以测试是否正确考虑了它)。例如,如果测试中已存在cookies['user_id'],请按照以下方式操作:

cookies['user_id'].expires = Time.zone.now - 1.day

(这会返回undefined method 'expires='
我在Rails中使用MiniTest。

1 个答案:

答案 0 :(得分:1)

您可以使用TimeCop计算考试时间:

def setup
  do_something_which_sets_cookie
  Timecop.freeze(1.month.from_now) 
  # or how ever long it takes the cookie to expire
end

def teardown 
  Timecop.return
end

如果您要测试的是应用程序在一段时间后的行为方式而不将测试与实现细节联系起来,那么这可能是一个很好的方法。

否则,您只需确保在设置到期之前cookie已存在:

cookies['user_id'].expires = Time.zone.now - 1.day if cookies['user_id']