OmitAutoProperties会影响非自动属性

时间:2017-05-07 07:55:39

标签: autofixture

我有一个类似于此属性的类

public string Foo
    {
        get { return _foo; }
        set
        {
            if (!string.Equals(_foo, value))
            {
                _foo= value;
                OnPropertyChanged();
            }
        }
    }

当我用_fixture = new Fixture {OmitAutoProperties = true};创建对象时,我希望它有价值,但它是null,而setter永远不会命中。我想念一下吗?

2 个答案:

答案 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 不会尝试来设置任何属性值,这是设计使然。