1

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

我有类似的东西:

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

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

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

objParam.SomeIntValue += 1;

objParam既不是 aref也不是outParameter,它是一个对象。有没有办法用 FakeItEasy 做到这一点?

4

1 回答 1

2

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

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

参考调用自定义代码

于 2019-10-14T16:13:08.807 回答