Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Timecop gemで日付をモックする

概要

Timecop gemで日付をモックする

詳細

準備

timecop gemをインストールする

gem i timecop

# またはGemfileに追加

https://rubygems.org/gems/timecop

利用法

・Timecop.freezeで現在日時を任意の時間で固定にする
・Timecop.travelで現在日時を任意の時間にセットした後に、時間が動き出す

サンプルコード
# encoding: utf-8
require 'tbpgr_utils'
require 'timecop'

Timecop.freeze(Time.local(2014, 4, 1))

sleep 1

bulk_puts_eval binding, <<-EOS
Date.today
Time.now
DateTime.now
EOS

Timecop.travel(Time.local(2014, 4, 1))

sleep 1

bulk_puts_eval binding, <<-EOS
Date.today
Time.now
DateTime.now
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval
attr_accessor_init

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils
出力
Date.today # => #<Date: 2014-04-01 ((2456749j,0s,0n),+0s,2299161j)>
Time.now # => 2014-04-01 00:00:00 +0900
DateTime.now # => #<DateTime: 2014-04-01T00:00:00+09:00 ((2456748j,54000s,0n),+32400s,2299161j)>
Date.today # => #<Date: 2014-04-01 ((2456749j,0s,0n),+0s,2299161j)>
Time.now # => 2014-04-01 00:00:01 +0900
DateTime.now # => #<DateTime: 2014-04-01T00:00:01+09:00 ((2456748j,54001s,37103176n),+32400s,2299161j)>