このタスクを作成するための Factory を作成し、Seams を通じて使用できます。プロパティ シームを使用できます。これは、ファクトリのインスタンスをテスト中のクラスのプロパティに設定する場合、またはコンストラクタを介してファクトリを指定することでコンストラクタ シームを使用できる場合です。次に、このファクトリをモックして、2 つのシームのいずれかを介して設定し、VerifyDataTypesAsync メソッドがタスクを作成するメソッドを呼び出しているかどうかを確認できます。
class YourClass
{
public YourClass(ITaskFactory factory)
{}
public void VerifyDataTypesAsync()
{
Task verificationTask = factory.Create(); // you can pass an instance of a delegate as parameter if you need.
}
}
class TasksFactory : IFactory
{
public Task Create()
{
}
}
次に、テストで IFactory のモック オブジェクトを作成し、それをクラスのコンストラクターに渡し、モックのモック ルールを設定して、メソッド Create が呼び出されたかどうかを確認します。
NUnit と RhinoMocks について話している場合、これについて調べることができます。
var mockRepository = new MockRepository();
var mockObject = mockRepository.CreateMock<IFactory>();
var yourClass = new YourClass(mockObject);
Expect.Call(mockObject.Create);
mockRepository.ReplayAll();
mockObject.VerifyDataTypesAsync()
mockRepository.VerifyAll(); // throw Exception if your VerifyDataTypesAsync method doesn't call Create method of IFactory mock
大雑把に言えば…でもそれも一通り…