如何使用 AutoFixture 创建对象但不填写任何属性

How can I use AutoFixture to create an object but not fill out any properties

使用 AutoFixture,我可以使用 Create 方法轻松创建数据对象的实例,如下所示:

_fixture.Create<FilterItems>()

使用这种技术,我可以避免将来可能发生的构造函数中的任何更改,但它也会填充在这种情况下(因为它是过滤器的集合)不需要的所有属性。

有没有办法只告诉 AutoFixture 创建对象,而不填写任何属性?

我知道有一个 Without 方法可以跳过一个字段,但使用它意味着我必须继续向它添加内容,而我宁愿只从一个空对象开始,然后在测试需要时添加它。

您应该在创建样本之前调用 _fixture.OmitAutoProperties = true;

有很多方法可以做到这一点。

您可以一次性完成:

var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create();

您还可以自定义 fixture 实例以始终忽略特定类型的自动属性:

fixture.Customize<FilterItems>(c => c.OmitAutoProperties());

或者您可以完全关闭自动属性:

fixture.OmitAutoProperties = true;

如果您正在使用像 AutoFixture.Xunit2 这样的单元测试 Glue 库之一,您也可以通过声明方式进行:

[AutoData]
public void MyTest([NoAutoProperties]FilterItems fi)
{
    // Use fi here...
}