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
时,它使用该函数来创建一个新实例。