有什么方法可以给 AutoFixture 一个对象实例并让它遍历所有设置器并设置随机数据? wiki 示例仅展示如何从 AutoFixture 获取实例,例如
var autoGeneratedClass = fixture.Create<ComplexParent>();
我的示例用例是一个工厂方法,它根据配置生成具有动态属性的对象实例。我想测试我的方法是否正确,检测并交互(例如复制)这些动态属性。
dynamic dynamicPropertyObject1 = factoryMethod(configuration);
dynamic dynamicPropertyObject2 = factoryMethod(configuration);
dynamicPropertyObject1.propA = random.Next();
dynamicPropertyObject1.CopyTo(dynamicPropertyObject2);
Assert.That(dynamicPropertyObject2.propA, Is.EqualTo(dynamicPropertyObject1.propA);
谢谢
AutoFixture 有很多用于创建对象的内置启发式方法,包括一些工厂方法。
如果 AutoFixture 在某个类型上没有找到公共构造函数,它就会开始寻找工厂方法;即返回定义该静态方法的类类型的对象的静态方法,例如
public class Foo
{
public static Foo CreateFoo();
// ... other members
}
另一方面,如果另一个类上存在工厂方法,则您需要为 AutoFixture 提供一些帮助。最简单的方法是使用
Customize
方法:
fixture.Customize<Foo>(c => c
.FromFactory(() => FooFactory.CreateFoo())
.WithAutoProperties());
当您随后向
Fixture
对象请求 Foo
对象时,将调用 FooFactory.CreateFoo()
,并且由于 WithAutoProperties
,该对象将填充由 AutoFixture 创建的数据。