Day28 测试写起乃 - Timecop

Timecop 可以帮助你在测试时将时间冻住,因为有些讯息中会带有时间,如果要确保时间一致就必须要将时间冻住才可以测试。

安装 Timecop

官方文件

gem 'timecop' & bundle install

Timecop 使用的三种方式

freeze => 时间都会停留在指定的时间,或是直到你返回原来的时间。

[16] pry(main)> Timecop.freeze(Time.parse('2020/09/30 08:30:30')) # 2020-09-30 08:30:30 +0800
[17] pry(main)> Time.now # 2020-09-30 08:30:30 +0800
[18] pry(main)> Timecop.return
[19] pry(main)> Time.now # 2021-09-29 22:23:25 +0800

travel => 时间会移动到你指定的时间,并且继续

[16] pry(main)> Timecop.travel(Time.parse('2021/11/30 08:30:30')) # 2021-11-30 08:30:30 +0800
# wait 3 second
[17] pry(main)> Time.now # 2021-11-30 08:30:33 +0800
[18] pry(main)> Timecop.return
[19] pry(main)> Time.now # 2021-09-29 22:23:25 +0800

scale => 将时间单位调整

[37] pry(main)> Timecop.scale(10) # 1 秒等於 10 秒
2020-09-29 23:15:58 +0800
[46] pry(main)> sleep 1
[47] pry(main)> Time.now
2020-09-29 23:16:08 +0800

Timecop in Rspec

before(:all) do
  Timecop.freeze(Time.current)
end

after(:all) do
  Timecop.return
end

在测试前将时间冻住,并在最後 return,通常必须成对为最佳

参考来源:
用 Timecop 自由穿梭时间轴


<<:  [Day13] 团队管理:建立团队信赖感(2)

>>:  DAY26-JAVA的Runnable介面

生存法则一:在快速变动的环境下生存

承认我们都有一些资讯焦虑 我们生活在快速变动的时代,无时无刻都有新的产业跟名词冒出,数据驱动决策、区...

function :发生 JavaScript 严重错误\n\nSCRIPT1006: 必须要有 ')'

#取得Query String #取得URL的Query String https://127.0....

[DAY 16] Route 53 part 3

路由政策 routing policies 这些 routing policies 定义了 Rout...

Day29:每天一个小练习 - JS30-14-JS Reference VS Copy

参考资料: Alex老师教学 JS30-Day14-JS Reference VS Copy 传值和...

Android Curv Gradient 曲线渐层

前言 平常我们使用的渐层方式通常都是在drawable用Xml配置参考 或者是在程序中设置Paint...