C# “自动夹具”;加上-使用生成时忽略的自定义设置<;T>;
我的目标是能够只定义与特定测试相关的参数,使用c#中的不可变类型(严格地说是构造函数注入,没有设置器),并使用定制的夹具来处理测试中未指定的参数的有效值 让我摸不着头脑的是,我的字符串、DateTime和int的“with”属性自定义被忽略了。基于“来宾”的示例: 我自定义了一个Fixture实例,如下所示:C# “自动夹具”;加上-使用生成时忽略的自定义设置<;T>;,c#,autofixture,C#,Autofixture,我的目标是能够只定义与特定测试相关的参数,使用c#中的不可变类型(严格地说是构造函数注入,没有设置器),并使用定制的夹具来处理测试中未指定的参数的有效值 让我摸不着头脑的是,我的字符串、DateTime和int的“with”属性自定义被忽略了。基于“来宾”的示例: 我自定义了一个Fixture实例,如下所示: fixture.Customize<Guest>(composer => composer .Wi
fixture.Customize<Guest>(composer =>
composer
.With(g => g.GivenName, "Finn")
.With(g => g.GuestId, "1")
.With(g => g.SurName, "Rasmussen")
);
fixture.Customize(composer=>
作曲家
.With(g=>g.GivenName,“Finn”)
.带(g=>g.GuestId,“1”)
.带(g=>g.姓,“拉斯穆森”)
);
…在使用fixture.Create()
时有效,但在使用带有(g=>g.姓氏,“Olsen”)的fixture.Build()时无效。
查看AutoFixture签名,我理解这是因为Fixture.Build()
实例化了一个新的composer,而该composer没有作为Customize
方法的“composer”实例注入。
另外-我知道属性的第一个自定义项“wins”,因此“overwrites”必须推到自定义项之前
有什么建议吗?我是不是完全没有办法用螺丝刀钉钉子?或者我只是没有在这里看到一些聪明和/或明显的东西…对于任何其他人来说:
构建类型的默认策略可以通过
Fixture.Register<TType>(Func<TType> creator)
Fixture.Register(函数创建者)
工作起来很有魅力…另请参阅谢谢马克,谢谢你的出色工作!
Fixture.Register<TType>(Func<TType> creator)