テストが実際の値と期待される値を比較する場合に、MySQL ストアド プロシージャと関数に対して自動テストを実行したいと考えています。
問題は、各テストの前にフィクスチャ スクリプトを実行したとしても、ほとんどのルーチンが同じ入力に対して異なる結果を返す可能性があることですnow
。(now
は、現在の日時を返す組み込み関数です。)
now
テストデータベースで返されるものをどのように「凍結」できますか?
私が考えることができる最善の解決策は、すべての呼び出しをnow
カスタム関数への呼び出しに置き換えることです。私たちの prod データベースでは、このカスタム関数は組み込みの を呼び出すだけnow
で、dev データベースでは静的な日付を返します。
のような簡単な方法はありSET global.CURRENT_TIME = '2015-01-01 00:00:00';
ますか?