AutoFixture是一个用于自动生成测试数据的库,它的设计初衷是用于创建可变对象。然而,有时我们可能需要创建不可变对象来进行测试。下面是一些解决方法:
var mockObject = new Mock();
mockObject.SetupGet(x => x.Property1).Returns("Value1");
mockObject.SetupGet(x => x.Property2).Returns("Value2");
// 设置其他属性
var immutableObject = mockObject.Object;
public class ImmutableObjectFixture : Fixture
{
protected override object Create(Type type)
{
if (type == typeof(ImmutableObject))
{
return new ImmutableObject("Value1", "Value2");
}
return base.Create(type);
}
}
然后,您可以使用自定义的ImmutableObjectFixture来创建不可变对象。
var fixture = new ImmutableObjectFixture();
var immutableObject = fixture.Create();
总结:虽然AutoFixture本身可能无法直接创建不可变对象,但通过使用其他库、自定义Fixture或模拟对象,我们可以实现创建不可变对象的目标。
上一篇:AutoFixturewithAutoMoq总是在自定义之后返回相同的实例。
下一篇:AutoFixture无法读取[Column(TypeName="nvarchar(10)")]?