如何为集合中的属性分配特定值?

How can i assign particular value to properties in a collection?

public PNDTicketNumberIsUniqueValidatorTests()
{
    _fixture = new Fixture().Customize(new AutoMoqCustomization());
    _validator = new PNDTicketNumberIsUniqueValidator();

    var pnd = _fixture.Build<PenaltyNotice>()
        .OmitAutoProperties()
        .Create();

    _fixture.Inject(pnd);

    _model = _fixture.Build<CaseModel>().OmitAutoProperties().With(w => w.PenaltyNoticeDisorders).Create();

    _model.PenaltyNotices[0].IdNumber = "12345";
    _model.PenaltyNotices[1].IdNumber = "4654";
    _model.PenaltyNotices[2].IdNumber = "87745";
}

此设置后,每个处罚通知都有相同的 IdNumber。

单步执行代码后,在任何 IdNumber 分配之前它们都是空的。 在第一次赋值后,它们都是 12345。 秒后都是 4654 第三个之后都是87745

我希望能够为特定的属性分配特定的值...这里是否有足够的信息来了解为什么这不起作用,或者想知道去哪里寻找?

一开始没发现,后来用

_fixture.Inject(pnd);

...你基本上是在对 AutoFixture 说:“每当你需要创建一个 PenaltyNotice 时,请使用(单个实例)pnd”。因此,您最终会在集合的每个成员中得到相同的实例。

您可能想要的是

_fixture.Register<PenaltyNotice>(() => _fixture
    .Build<PenaltyNotice>()
    .OmitAutoProperties()
    .Create());

类似于 Inject,但现在每次 AutoFixture 创建一个 PenaltyNotice 时,它都会使用该函数来创建一个新实例。