C# 调用方法时使用的FakeiTasy返回对象
我想像这样设置我的fake: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
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);