如何使用 Get() 和 Set() 方法最小化 class

How to moq a class with Get() and Set() methods

我似乎无法最小化我的 class,它有 getter 和 setter 方法(不是属性)。我需要稍后将变量保存到 return 的某个地方。

我的签名class:

public interface IMyClass
{
    int Get();
    void Set(int i);
}

我的实际实现:

我希望最小起订量如何表现:

public class MyClassFake : IMyClass
{
    private int _local;
    public int Get()
    {
        return _local;
    }

    public void Set(int i)
    {
        _local = i;
    }
}

到目前为止我尝试过但没有奏效的方法:

        var mockMyClass = new Mock<IMyClass>();
        var number = new int();
        mockMyClass.Setup(x => x.Set(It.IsAny<int>())).Callback<int>(x=> number = x);
        mockMyClass.Setup(x => x.Get()).Returns(number);

您必须更改 Get() 设置以使用接收 Func<> 作为参数的重载:

var mockMyClass = new Mock<IMyClass>();
var number = 0;
mockMyClass.Setup(x => x.Set(It.IsAny<int>())).Callback<int>(x => number = x);
mockMyClass.Setup(x => x.Get()).Returns(() => number);

在您当前的代码中,您将 Get() 结果定义为固定数字(number 的初始值)