質問: データベースを利用したシステムのユニットテストについての質問です。 環境はPHP + MySQL + SimpleTestですが、汎用的な回答であれば特に言語にこだわる必要はありません。 【データベース】 日時カラム(datetime型)を持つテーブルがあります。 【テストしたいメソッド】 ”メソッドの実行時”に、上記のカラムに”現在日時に一定の秒数を足した日時”を入れてその他のカラムとともに更新します。 (足される秒数はレコードごとに異なり、これは他のメソッドからメンバ変数にセットしています。) 更新に成功すればtrue、失敗すればfalseを返します。 現在は、メソッドの呼び出し後=レコード更新後にそのレコードを取得し、あらかじめ用意した期待する結果と比較してテストしています。 ただ、上記の日時カラムについては、カラムに入る値がメソッドを呼び出すまで特定できないため、比較によるテストができません。 このようなメソッドをテストする場合、どうするのがよいでしょうか?みなさん、どうしてますか? 目視で確認? 日付カラムは無視する? メソッドをオーバーライド? そもそも、戻り値のテストだけすればよい? よろしくお願いします。
回答: >そもそも、戻り値のテストだけすればよい? これです。 DB格納に関しては、別のテストを実施されてるか、実施してたらOKです。 >上記の日時カラムについては、カラムに入る値がメソッドを呼び出すまで特定できないため、比較によるテストができません。 このテスト方法でテストする項目ではそもそもありません。