単体テストしやすいように依存するクラスをコンストラクタから指定して、テスト時と本番時で差し替え可能にする方法ってあると思います。
今まで、そういうコードを書くときはこう書いてました。
class Hoge { private IFoo foo; public Hoge(IFoo foo) { this.foo = foo; } // 本番用にデフォルトのインスタンスを渡す public Hoge() : this(new Foo()) {} }
こうしておけばテスト時に以下のように書けます。
var h = new Hoge(new FooMock());
ただ、こういう書き方もできるんだなというのを見つけました。
class Hoge { private IFoo foo; // デフォルトの引数でnullを渡しておく public Hoge(IFoo foo = null) { // nullだったら本番用インスタンス作る。 this.foo = foo ?? new Foo(); } }
書き方としてはコンパクト!!いいかも??