この場合は、特定のタイプの AutoFixture 標本ビルダーを作成していSystem.Data.DataSet
ます。ビルダーは、テスト用FakeDataSet
にカスタマイズされたを返しDataSet
ます。
以下は、 aが要求されているdataSet
場合でも、常に null を返すため、機能しません(プロパティにドリルダウンすることでわかります)。DataSet
request
public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var dataSet = request as DataSet;
if (dataSet == null)
{
return new NoSpecimen(request);
}
return new FakeDataSet();
}
}
このバリエーションは機能しますが、複雑すぎるようです。同じことを達成するためのより良い方法があるように感じますが、何かが足りないだけです。
public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var seededRequest = request as SeededRequest;
if (seededRequest == null)
{
return new NoSpecimen(request);
}
var requestType = seededRequest.Request as Type;
if (requestType == null)
{
return new NoSpecimen(request);
}
if (requestType.Name != "DataSet")
{
return new NoSpecimen(request);
}
return new FakeDataSet();
}
}