我似乎没有moq我的类有getter和setter方法(不是属性)。我需要将变量保存到某处以便稍后返回。
我的班级签名:
public interface IMyClass
{
int Get();
void Set(int i);
}
我真正的实施:
我希望moq表现如何:
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);
答案 0 :(得分:1)
您必须更改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
)