私はTDDを検討しています。私はいくつかの助けを借りることができるシナリオを見つけました。TDDは内部コンストラクタにMocked Repository(UnitOfWork)を挿入します
私のプロジェクトはMVC3を使用し、BALとDALレイヤーを持つように構成されています。各レイヤーはそれぞれ独自のプロジェクトに含まれています。 BALは、リポジトリパターンを介してデータベースにアクセスします。私はEntityFrameworkを使用しているので、UnitOfWorkパターンも実装しました。
public class ExampleService
{
private UnitOfWork unitOfWork;
private bool isProcessing = false;
internal ExampleService(UnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public void ExposedMethod()
{
//do stuff with the unitOfWork
}
}
質問:私は、このためのユニットテストを作成したいと思います(もちろん、私はコードの前にテストを書かれているはずです)。ここBALでのサービスクラスは次のようになります。ただし、コードをそのまま実行すると、UnitOfWorkを使用してデータベースに接続するため、テストは統合テストになります。私は、メモリ内のダミーデータにアクセスする新しいUnitOfWorkをモックアップすることができますが、コンストラクタが内部であるため、それを挿入する方法を理解していません。私はむしろ各プロジェクトの内部にある単体テストを書いてはいけません。
どのような考えですか?
[InternalsVisibleTo]はそのまま私の質問を解決します。私はまだDIで何かを見逃しているかもしれませんが、私が示したクラスの例はBALにあり、UnitOfWorkはDALにあります。サンプルクラスへのアクセスを制御する別のクラスがあるので、コンストラクタをinternalとマークしました。私はもう少しこれを考慮する必要があります。ありがとう! – AFrieze