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);