いくつかのマッピング メソッドの単体テストを行っていますが、文字列型のソース プロパティが整数型の宛先プロパティにマップされています。
したがって、AutoFixture に、すべての文字列プロパティではなく、特定の文字列プロパティの匿名整数を使用してソース オブジェクトを作成してもらいたいと考えています。
これは可能ですか?
いくつかのマッピング メソッドの単体テストを行っていますが、文字列型のソース プロパティが整数型の宛先プロパティにマップされています。
したがって、AutoFixture に、すべての文字列プロパティではなく、特定の文字列プロパティの匿名整数を使用してソース オブジェクトを作成してもらいたいと考えています。
これは可能ですか?
これを解決する最善の方法は、その名前に基づいて、匿名の数値の文字列表現を特定のプロパティに割り当てる、規則に基づくカスタム値ジェネレータを作成することです。
したがって、例を挙げると、次のようなクラスがあると仮定します。
public class Foo
{
public string StringThatReallyIsANumber { get; set; }
}
カスタム値ジェネレーターは次のようになります。
public class StringThatReallyIsANumberGenerator : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var targetProperty = request as PropertyInfo;
if (targetProperty == null)
{
return new NoSpecimen(request);
}
if (targetProperty.Name != "StringThatReallyIsANumber")
{
return new NoSpecimen(request);
}
var value = context.CreateAnonymous<int>();
return value.ToString();
}
}
ここでの重要な点は、カスタム ジェネレーターは という名前のプロパティのみを対象とするということです。StringThatReallyIsANumber
この場合、これが規則です。
テストで使用するには、コレクションFixture
を介してインスタンスに追加するだけです。Fixture.Customizations
var fixture = new Fixture();
fixture.Customizations.Add(new StringThatReallyIsANumberGenerator());
var anonymousFoo = fixture.CreateAnonymous<Foo>();