使用AutoFixture我可以使用Create方法轻松创建数据对象的实例,如下所示:
_fixture.Create<FilterItems>()
使用这种技术我可以保护未来可能出现的构造函数中的任何更改,但它也会填充所有属性,在这种情况下(因为它是一组过滤器)是不需要的。
有没有办法告诉AutoFixture创建对象,但不填写任何属性?
我知道那里没有方法可以跳过一个字段,但是使用它意味着我必须继续添加它,而我只是从一个空对象开始并在测试需要时添加它
答案 0 :(得分:6)
有很多方法可以做到这一点。
您可以将其作为一次性操作:
var fi = fixture.Build<FilterItems>().OmitAutoProperties().Create();
您还可以自定义fixture
实例,以便始终省略特定类型的自动属性:
fixture.Customize<FilterItems>(c => c.OmitAutoProperties());
或者您可以完全关闭自动属性:
fixture.OmitAutoProperties = true;
如果您正在使用其中一个单元测试胶水库,例如AutoFixture.Xunit2,您也可以声明性地执行:
[AutoData]
public void MyTest([NoAutoProperties]FilterItems fi)
{
// Use fi here...
}
答案 1 :(得分:1)
在创建标本之前,您应该致电_fixture.OmitAutoProperties = true;
。