【问题标题】:Change mocked function parameter value with FakeItEasy? [duplicate]使用 FakeItEasy 更改模拟函数参数值? [复制]
【发布时间】:2019-10-14 15:54:12
【问题描述】:

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

我有类似的东西:

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

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

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

objParam.SomeIntValue += 1;

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

【问题讨论】:

    标签: c# unit-testing mocking stub fakeiteasy


    【解决方案1】:

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

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

    【讨论】:

    • 完美,感谢您的明确回答
    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 2010-09-15
    • 2023-03-14
    • 2012-07-18
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多