テストを書いていて、特定のメソッドにモックを渡す必要がありました。コンストラクターを介して、または問題のメソッドに直接渡すことの利点はあるのでしょうか。それとも、それは本当に問題ではありません。
例えば
コンストラクターを介してインターフェイス/モックを渡す
class User()
{
IClock clock;
User(IClock clock) {this.clock = clock;}
User GetUser(){ ..}
UpdateUser(User user) {
...
this.clock.Now();
...
}
}
対
インターフェイス/モックをメソッドに渡す
class User()
{
User GetUser(){ ..}
UpdateUser(IClock clock, User user) {
...
clock.Now();
...
}
}
ありがとう!
編集
この場合、IClock は DateTime をラップします。テスト容易性のためにこれを行います。事実上、IClock 自体を構築するオーバーライドを用意します。
例えば。メソッドの場合:
UpdateUser(User user) {
UpdateUser(new Clock(), user);
}
Clock は DateTime をカプセル化します。