【Apex】テスト時にシステム日付を指定したい。

Salesforce

テストコードで、システム日付を指定したい場合があると思います。

テストクラスがいつ実行されても、システム日付が 2019年4月1日 という前提のもと実行結果をassertしたい。みたいな。

結論を言うと、テストクラス側でシステム日付の指定はできないっぽいです。
ただしテスト対象となるクラス側で Test.isRunningTest() を使えば、やりたいことができる場合があります。

こんな感じです。

サンプルクラスを通常実行した場合のデバッグログです。
今日は6月10日なので、6月10日が出力されます。

13:53:15:014 USER_DEBUG [16]|DEBUG|システム日付:2019-06-10 00:00:00

続いて、テストクラスから実行した場合のデバッグログです。
テスト実行時はちゃんと4月1日になっています。

13:54:09:003 USER_DEBUG [16]|DEBUG|システム日付:2019-04-01 00:00:00

これで、ちょっと無理やりですが、一応できることの幅は広がります。
こういうことも踏まえて、テストコードが書きやすいコーディングをしないといけないですね。

もっと上手い方法見つけたら追記します。

コメント

タイトルとURLをコピーしました