時間に敏感なテスト ケースのテストに TimeCop Gem を使用しています。lib ディレクトリに 1 つのファイルがあります。文字列定数だけが含まれています。
例。
module DateStr
SAMPLE = "Some date #{Date.current}"
end
私のキュウリのテスト ケースでは、コードのこの部分はモック タイムを取得しません。システム時刻を選択します。何故ですか?
時間に敏感なテスト ケースのテストに TimeCop Gem を使用しています。lib ディレクトリに 1 つのファイルがあります。文字列定数だけが含まれています。
例。
module DateStr
SAMPLE = "Some date #{Date.current}"
end
私のキュウリのテスト ケースでは、コードのこの部分はモック タイムを取得しません。システム時刻を選択します。何故ですか?
がDateStr
ロードされると、SAMPLE
定数が作成され、存在する日付が割り当てられました。
定数は変更されることが想定されていないため、これは定数の間違った使用例であると言えます。
編集。
この動作には定数を使用しません。ハックな方法は、ラムダを使用することです。
module DateStr
SAMPLE = -> {"Some date #{Date.current}"}
end
DateStr::SAMPLE.call # This will evaluate to current date
しかし、これは適切な使用例ではありません。値自体が定数ではないためです。代わりに、この種の動作には単純なクラス メソッドを使用する必要があります。
module DateStr
def self.sample
"Some date #{Date.current}"
end
end