gpt4 book ai didi

autofixture - 如何使用随机值填充对象的实例?

转载 作者:行者123 更新时间:2023-12-02 01:40:39 32 4
gpt4 key购买 nike

有什么办法可以给 AutoFixture 一个对象的实例,让它通过所有的 setter 并设置随机数据? 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)构造函数,它就会开始寻找工厂方法;即返回定义该静态方法的类类型的对象的静态方法,例如

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 创建的数据。

关于autofixture - 如何使用随机值填充对象的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766273/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com