問題
状況の絵を「描いて」みましょう。
- 私はSUTを持っています。(持っているのは良いことです:P)
- SUTにいくつかの依存関係を注入できます。
- メソッドでは、次のことを行います:new OtherClass(ParametersObtainedFromDependancies)。
- OtherClassが正しく機能するために意味のあるモックオブジェクトを作成する複雑さを処理せずに、SUTでそのメソッドを単体テストしたいと思います。これは、OtherClassをテストすることを意味します。
これに対する私の解決策は、デリゲートを使用するファクトリメソッドでした。
public Func<OtherClass,Param1Type> GetOtherClass =
(param1) => new OtherClass(param1);
悪い点:それは公開されています。必要に応じてオーバーライドできるオプションの依存関係と考えることができます。しかしとにかく、公衆はにおいがします。
良い点:このメソッドをオーバーライドするMyTestSUTを作成する必要はなく、SUTでモックを使用してそのメソッドをオーバーライドする必要もありません。
質問
より良い解決策はありますか?これは正しいです?