2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rspecでtravel_toの影響を受けずにクラスの定数の値を設定する方法

Last updated at Posted at 2024-10-02

環境

  • rails6.0系
  • rspec3系

初めに

※サンプルコードになります

travel_toメソッドで時刻を変更した中で実施したテストがありました。
その中で、定数の内部で現在時刻から30日前を取得する処理があったのですが、travel_toの影響を受けず、テスト実行時の時刻を元に取得している問題が発生しました。

before { travel_to('2023-06-20 18:00:00') }
class User
  TEST_DATE = Time.current.ago(30.days).strftime('%Y-%m-%d') # テストの中で呼ぶとtravel_toの影響を受けず実行時の現在時刻から算出された
end

解決策

テスト実行前に、呼び出している定数をstub_constで書き換えてあげると上手くいきます

stub_const('User::TEST_DATE', Time.current.ago(30.days).strftime('%Y-%m-%d'))
expect xx # 実行する際は上記のスタブの値が参照されるようになる

参考文献

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?