FakeItEasy return 调用该方法的对象
FakeItEasy return object that the method is called with
我想像这样设置我的假货:
A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ);
其中 XYZ
与在 A<PersonModel>._
处插入的变量相同
所以如果用 mySamplePersonModel
调用 Create
我希望方法 return mySamplePersonModel
.
我怎样才能做到这一点?
提前致谢
我找到了答案,您可以像这样捕获参数:
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;
});
如果有人有更优雅的解决方案,请随时 post :-)
您找到的解决方案是正确的。 IMO 有一个更具可读性的替代方案:
A.CallTo(() => repository.Create(A<PersonModel>._)).ReturnsLazily((PersonModel p) => p);
我想像这样设置我的假货:
A.CallTo(() => this.repository.Create(A<PersonModel>._)).Returns(XYZ);
其中 XYZ
与在 A<PersonModel>._
所以如果用 mySamplePersonModel
调用 Create
我希望方法 return mySamplePersonModel
.
我怎样才能做到这一点?
提前致谢
我找到了答案,您可以像这样捕获参数:
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;
});
如果有人有更优雅的解决方案,请随时 post :-)
您找到的解决方案是正确的。 IMO 有一个更具可读性的替代方案:
A.CallTo(() => repository.Create(A<PersonModel>._)).ReturnsLazily((PersonModel p) => p);