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之前,它们都为null。 第一次分配后,他们都是12345。 在第二个之后,它们都是4654 在第三之后,他们都是87745
我希望能够将特定的值分配给特定的属性...这里是否有足够的信息来说明为什么此方法不起作用,或者关于在哪里寻找想法?
答案 0 :(得分:2)
我最初没有发现它,而是使用
_fixture.Inject(pnd);
...您基本上是对AutoFixture说:“每当需要创建PenaltyNotice
时,就使用(单个实例)pnd
”。因此,您最终在集合的每个成员中拥有相同的实例。
您原本打算的是
_fixture.Register<PenaltyNotice>(() => _fixture
.Build<PenaltyNotice>()
.OmitAutoProperties()
.Create());
类似于Inject
,但是现在每次AutoFixture创建一个PenaltyNotice
时,它都会使用该功能来创建新实例。