現在の日付を取得するヘルパークラスが必要です。私は将来のテストの問題(システム時間とは異なる時間を返す必要があるかもしれない)のためにコードにnew Date()
があるのを避けたいと思います。テストでの問題を防ぐためにJodaTimeを使用することはできません。java.util.Dateのモック可能ヘルパークラス
私はこのようなヘルパーを考えていた:
public interface DateHelper {
/**
* Returns the current date.
*/
Date now();
}
しかし、どのように、私はクライアントにこのインターフェースのモックを供給することができますか?私は考えることができる 唯一の解決策はこれです:
public ClientOfDateHelper {
private DateHelper dateHelper;
// no-arg constructor that instantiates a standard implementation of DateHelper
public ClientOfDateHelper() {
this.dateHelper = new DefaultDateHelper();
}
// constructor that can be used to pass mock to the client
public ClientOfDateHelper(DateHelper suppliedDateHelper) {
this.dateHelper = suppliedDateHelper;
}
public void foo() {
Date today = dateHelper.now();
// do some work that requires today's date
}
}
DateHelperを使用するために以下のコードを必要とし、よりエレガントな解決策はあります、まだそれはモックを使用したことができますか?
依存関係注入または依存関係検索(クライアントが一部の中央サービス/クラスから日付ヘルパーをリクエストします)はどうですか? – Thomas