TDDに従うことで開発スキルを向上させるよう私のチームに動機づけようとしています。ファクトリを使用したクラスでTDD原則に従う方法
1 /私たちは何かが起きたときにトリガされ、一連のアクションを実行するように設計された "ブローカ"を開発しています(電子メール、データを処理し、ファイルを変換する...)。
2 /単純なActivator.CreateInstance(brokerType)
のおかげで、アプリケーションの起動時にすべてのブローカーが読み込まれます。
3 /私たちのブローカーの1人は、Excelファイルからレコードを抽出し、関連するレコードをDBで検索しようとしています。
public void Process(string file)
{
using (var sun = new SunSystemExcelDataSource(ExcelDatasourceFactory.Create(file)))
{//...}
}
このコードは、指定されたExcelが(XLSX対XLS)を提出し、それがパラメータとして渡された解析できる(IExcelSource
から継承)するクラスを返す工場を呼び出します。そうするために私たちは以下のコードを使用しますSunSystemExcelDataSource
のコンストラクタに渡します。
質問:この方法はほとんどテストすることができません。あなたが私たちにコードテスト能力を向上させるためのヒントを与えることができるかどうか疑問に思っていました。
一般に、工場に依存して自分自身を構築するクラスをテストするにはどうすればよいですか?
コード:
public void Initialize(ILog log, AppSettings settings)
{
_log = log;
_hrdb = DbDatasourceFactory.CreateHrdbDatasource(settings.HrdbConnectionString);
_processor = new K2Processor(settings.SettlePaymentWorkflow);
_sunFolderPath = settings.SunSystemExcelFolderPath;
}
工場静的な型ではないはずですが、依存関係も同様に注入します。このようにしてFactoryをモックし、テスト可能なオブジェクトを返します。 –
Microsoftのシムと偽物は静的メソッドをモックできます。私たちはそれを使うことができます、 –