如何为集合中的属性分配特定值?
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
时,它都会使用该函数来创建一个新实例。
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
时,它都会使用该函数来创建一个新实例。