Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 调用方法时使用的FakeiTasy返回对象_C#_.net_Unit Testing_Mocking_Fakeiteasy - Fatal编程技术网

C# 调用方法时使用的FakeiTasy返回对象

C# 调用方法时使用的FakeiTasy返回对象,c#,.net,unit-testing,mocking,fakeiteasy,C#,.net,Unit Testing,Mocking,Fakeiteasy,我想像这样设置我的fake: A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ); A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => x.Arguments.Get<PersonModel>(0)); A.CallTo(() => this.re

我想像这样设置我的fake:

A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ);
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => x.Arguments.Get<PersonModel>(0));
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x =>
            {
                var personModel = x.Arguments.Get<PersonModel>(0);
                personModel.Name = "aName";
                return personModel;
            });
A.CallTo(()=>this.repository.Create(A.))).Returns(XYZ);
其中,
XYZ
与在
A处插入的变量相同

因此,如果使用
mySamplePersonModel
调用
Create
,我希望该方法返回
mySamplePersonModel

我怎样才能做到这一点


提前感谢

我找到了答案,你可以捕捉到这样的论点:

A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ);
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => x.Arguments.Get<PersonModel>(0));
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x =>
            {
                var personModel = x.Arguments.Get<PersonModel>(0);
                personModel.Name = "aName";
                return personModel;
            });
A.CallTo(()=>this.repository.Create(A.)).returnslazly(x=>x.Arguments.Get(0));
您甚至可以这样修改此参数:

A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ);
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x => x.Arguments.Get<PersonModel>(0));
A.CallTo(() => this.repository.Create(A<PersonModel>._)).ReturnsLazily(x =>
            {
                var personModel = x.Arguments.Get<PersonModel>(0);
                personModel.Name = "aName";
                return personModel;
            });
A.CallTo(()=>this.repository.Create(A.)).returnslazly(x=>
{
var personModel=x.Arguments.Get(0);
personModel.Name=“aName”;
返回人员模型;
});

如果有人有更优雅的解决方案,请随时发布:-)

您找到的解决方案是正确的。在我看来,还有一个更具可读性的替代方案:

A.CallTo(() => repository.Create(A<PersonModel>._)).ReturnsLazily((PersonModel p) => p);
A.CallTo(()=>repository.Create(A.。).returnslazilly((PersonModel p)=>p);