DateTime.now を使用していくつかのデータの検索を実行するメソッドがあります。さまざまな日付でメソッドをテストしたいのですが、DateTime.now をスタブ化する方法がわかりませんし、Timecop で動作させることもできません (そのように動作します)。
私が試した時間の警官で
it 'has the correct amount if falls in the previous month' do
t = "25 May".to_datetime
Timecop.travel(t)
puts DateTime.now
expect(@employee.monthly_sales).to eq 150
end
仕様を実行すると、 puts DateTime.now が得られることがわかります2015-05-25T01:00:00+01:00
が、出力をテストしているメソッド内に同じ puts DateTime.now があることがわかります2015-07-24T08:57:53+01:00
(今日の日付)。どうすればこれを達成できますか?
- - - - - - - - - アップデート - - - - - - - - - - - - - - - - --------------------
before(:all)
問題の原因と思われるブロックにレコード (@employee など) を設定していました。Timecop do
ブロックの後にセットアップが完了した場合にのみ機能します。これはなぜですか?