フォームの送信が午後 3 時以降に行われた場合、次の日に予約できないことを確認するカスタム検証を Apt モデルで作成しました。カスタム検証が正しく機能していることを確認してください。
現在、私のテストには、テストが午後 3 時より前または後に実行されているかどうかを確認する if ステートメントが含まれており、現在のシステム時間に基づいて別のテストを使用しています。ただし、システム時間に関係なく、両方のケースをテストできるようにしたいと考えています。
test "booking appointment for tomorrow before/after three pm" do
a = appointments(:aptone)
# Set appointment date to tomorrow
a.apt_date = DateTime.current + 1.day
if (Time.current.hour >= 12)
assert(a.invalid?, 'Appointment CANNOT be booked after 3 PM')
elsif
assert(a.valid?, 'Appointment CAN be booked before 3 PM')
end
end
テストの実行中にシステム時間を一時的に設定して、テストの実行時期に関係なく両方のアサーションをテストできるようにする方法があるかどうか疑問に思っています。