我有一个类似于此属性的类
public string Foo
{
get { return _foo; }
set
{
if (!string.Equals(_foo, value))
{
_foo= value;
OnPropertyChanged();
}
}
}
当我用_fixture = new Fixture {OmitAutoProperties = true};
创建对象时,我希望它有价值,但它是null,而setter永远不会命中。我想念一下吗?
答案 0 :(得分:2)
这是设计的。正如文档所述:
获取或设置在生成匿名对象时是否通常应为可写属性赋值。
换句话说,在AutoFixture中,术语 auto-property 指的是自动填充可写属性的AutoFixture的功能。或许更好的词是DoNotAutomaticallyPopulateProperties
。
我可以理解这种混淆,就像在C#中一样, auto-property 也可以解释为Auto-Implemented Properties。
坦率地说,AutoFixture的术语或许应该更加谨慎地选择,但在这些年里,我认为以前从未引起过我的注意。
具体在OP Foo
中是可写属性,当您禁用自动属性时,永远不会调用setter。
答案 1 :(得分:1)
OmitAutoProperties
设置决定了writable property should be set or not:
获取或设置在生成匿名对象时是否通常应为可写属性赋值。
因此,如果它是true
,则AutoFixture 不会尝试来设置任何属性值,这是设计使然。