我似乎无法最小化具有 getter 和 setter 方法(不是属性)的类。我需要将变量保存在某处以便稍后返回。
类(class)签名:
public interface IMyClass
{
int Get();
void Set(int i);
}
我的实际实现:
- Set() => 加密 int 并将其保存在局部变量中
- Get() => 从局部变量中解密 int 并返回 int
我希望最小起订量如何表现:
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
)
关于c# - 如何使用 Get() 和 Set() 方法最小化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222338/