有没有办法给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);
谢谢
发布于 2015-11-29 11:49:52
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创建的数据填充。
https://stackoverflow.com/questions/28766273
复制相似问题