【发布时间】:2018-05-29 23:32:43
【问题描述】:
在我的 NUnit 测试设置中,我创建了 AutoFixture 自定义项,我需要为我的对象预定义值。然而,这些只是默认值——一些测试需要以某种方式覆盖这些默认值。这就是我添加自定义项的方式:
fixture.Customizations.Add(new FilteringSpecimenBuilder(new FixedBuilder(value),
new ParameterSpecification(valueType, propertyName)));
如果我只是在测试中添加一个新的自定义项,该自定义项实际上不会被应用,因为它在图表的下方。
所以我认为我可以做的是remove 与我之前创建的 FilteringSpecimenBuilder 的签名相匹配的自定义,但这似乎不起作用,除非它是我在设置中创建的实际 FilteringSpecimenBuilder 实例。为了让它工作,我必须稍后保存并分类我在设置中创建的所有实例,这似乎是多余的,因为它们已经是夹具图的一部分。
然后我尝试了类似的方法,其中“name”是我要删除的变量的实际名称,但显然不允许引用 TargetType 和 TargetName 属性,因为它们已过时(并且错误消息不会'不解释替换是什么):
fixture
.Customizations
.OfType<FilteringSpecimenBuilder>()
.Where(x => x.Specification is ParameterSpecification)
.Where(x=>(((ParameterSpecification)x.Specification).TargetName == "name"))
.ToList()
.ForEach(c => fixture.Customizations.Remove(c));
有人知道替换自定义项或删除现有自定义项的方法吗?
【问题讨论】:
标签: autofixture