如何使用 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...
}
使用 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...
}