使用 FakeItEasy 更改模拟函数参数值?

Change mocked function parameter value with FakeItEasy?

我正在寻找一种方法来使用 FakeItEasy 更改 Mock 函数的参数值。

我有类似的东西:

var objParam = new ObjParam();
objParam.SomeIntValue = 0;

A.CallTo(() => iClass.Func(objParam)).WithAnyArguments().DoesNothing();

我想在调用函数后设置 objParam 的值,例如:

objParam.SomeIntValue += 1;

objParam 既不是 ref 也不是 out 参数,它是一个对象。有没有办法用 FakeItEasy 做到这一点?

捕获传递的参数并执行所需的自定义功能

//Arrange
IClass iClass = A.Fake<IClass>();

A.CallTo(() => iClass.Func(A<ObjParam>._))
    .Invokes((ObjParam arg) => arg.SomeIntValue += 1);

var objParam = new ObjParam();
objParam.SomeIntValue = 0;

//Act
iClass.Func(objParam);

//Assert
objParam.SomeIntValue.Should().Be(1);

引用Invoking Custom Code