怖話はminitestに書き換えつつあるんですが、Bizerでは他の開発者に気を使ってrspecを使っています。
Bizerをrails4.1に上げたので、「ヒャッハー、デフォルトでtravel_toが使えるからtimecop削除できるぜー!」と思ったのですがrspecじゃそのままじゃ使えない。(クソがぁ
Before:
it 'coupon is expired.' do
# FIXME: travel_to in rails 4.1
Timecop.travel(2014, 5, 10, 0, 0, 0) do
expect(expired_coupon_user.free_by_coupon?).to be_false
end
end
After:
# spec/spec_helper.rb:
RSpec.configure do |config|
config.include ActiveSupport::Testing::TimeHelpers
end
it 'coupon is expired.' do
travel_to Time.new(2014, 5, 10, 0, 0, 0) do
expect(expired_coupon_user.free_by_coupon?).to be_false
end
end
今までTime.now
やDate.today
を内部で使うメソッドはテストしやすいように
def metrix(now = Time.now); ... end
みたいに書いてたんですが、デフォルトで気軽にtravel_toが使えるならやらなくていいかな!