Kri*_*son 4 c# unit-testing autofixture
我正在测试一些映射方法,我有一个string类型的source属性,它被映射到integer类型的目标属性.
所以我希望AutoFixture使用特定字符串属性的匿名整数创建源对象,而不是所有字符串属性.
这可能吗?
解决此问题的最佳方法是创建基于约定的自定义值生成器,该生成器根据其名称将匿名数值的字符串表示形式分配给特定属性.
那么,举一个例子,假设你有一个这样的类:
public class Foo
{
public string StringThatReallyIsANumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
自定义值生成器如下所示:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
这里的关键点是自定义生成器只会定位名为的属性StringThatReallyIsANumber,在本例中是我们的约定.
要在测试中使用它,您只需Fixture通过Fixture.Customizations集合将其添加到您的实例:
var fixture = new Fixture();
fixture.Customizations.Add(new StringThatReallyIsANumberGenerator());
var anonymousFoo = fixture.CreateAnonymous<Foo>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |