Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “自动夹具”;加上-使用生成时忽略的自定义设置<;T>;_C#_Autofixture - Fatal编程技术网

C# “自动夹具”;加上-使用生成时忽略的自定义设置<;T>;

C# “自动夹具”;加上-使用生成时忽略的自定义设置<;T>;,c#,autofixture,C#,Autofixture,我的目标是能够只定义与特定测试相关的参数,使用c#中的不可变类型(严格地说是构造函数注入,没有设置器),并使用定制的夹具来处理测试中未指定的参数的有效值 让我摸不着头脑的是,我的字符串、DateTime和int的“with”属性自定义被忽略了。基于“来宾”的示例: 我自定义了一个Fixture实例,如下所示: fixture.Customize<Guest>(composer => composer .Wi

我的目标是能够只定义与特定测试相关的参数,使用c#中的不可变类型(严格地说是构造函数注入,没有设置器),并使用定制的夹具来处理测试中未指定的参数的有效值

让我摸不着头脑的是,我的字符串、DateTime和int的“with”属性自定义被忽略了。基于“来宾”的示例:

我自定义了一个Fixture实例,如下所示:

        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)