私はモック/偽のオブジェクトでTDDを実装することを学ぼうとしています。私が持っている質問の1つは、TDDを実装するアプリケーションで依存関係を初期化する方法です。この記事の例 Moq 3でモックを開始すると、次のようになります。
public class OrderWriter
{
private readonly IFileWriter fileWriter;
public OrderWriter(IFileWriter fileWriter)
{
this.fileWriter = fileWriter;
}
public void WriteOrder(Order order)
{
fileWriter.WriteLine(String.Format("{0},{1}", order.OrderId, order.OrderTotal));
}
}
この例では、コンストラクターがIFileWriter
パラメーターを取ります。実際のアプリケーションの場合は実際のファイルライターを、単体テストの場合は偽のファイルライターを提供するためです。私の質問は、実際のアプリケーションでは、誰がこのパラメーターを提供するのですか?このアプリケーションの呼び出し元になると思います。コンストラクタにも依存関係がある場合はどうなりますか?呼び出し元のコードもそれに責任がありますか?
たぶん、より良い方法は、ファクトリーを使用することです。この工場はどのように機能しますか?そして、工場はどのように分配されますか?上記の方法のようにコンストラクターパラメーターにありますか?