我想你应该为你的模拟案例创建HWSysManager(或其他名称)类,添加一些想要的方法,然后嘲笑它们。例如:
class HWSysManager
{
public virtual int ExampleReturnIntMethod(int a)
{
var someInt = 0;
return someInt;
}
,然后设置:
public void TestMethod()
{
Mock<HWSysManager> hwSysManager = new Mock<HWSysManager>();
hwSysManager.Setup(x => x.ExampleReturnInMethod(It.IsAny<int>())).Returns(10); //if parameter is any of int, return 10 in this case
}
然后使用您的嘲笑对象只使用 '对象' 属性:
var hwSysInstance = hwSysManager.Object;
var result = hwSysInstance.ExampleReturnInMethod(2); //result will be 10 in this case - as we have mocked
在壳体上方的方法/属性有是虚拟的。
可以使用接口也,你的情况:
public interface HwsysManager
{
int OpenConfiguration(string hwPath);
}
public void TestMethod()
{
Mock<HwsysManager> hwsysManager = new Mock<HwsysManager>();
hwsysManager.Setup(x => x.OpenConfiguration(It.IsAny<string>())).Returns(10);
}
这个模拟库的所有功能描述如下: https://github.com/Moq/moq4/wiki/Quickstart
所以改变我的应用程序是不可避免的。即使如此,我如何从我的应用程序中调用“ProcessBias”?现在我称之为:'HWSysManager sm = new HWSysManager(); ProcessBias(sm,“”);' – Pablo
基本上我必须实现所有方法委托,我使用该库。 – Pablo
您不应该在调用方法中创建实例。改为从构造函数中获取IHWSysManager。在你的开发机器中给出存根类作为参数,并在实际环境中给出真正的实现类。这种技术被称为依赖注入,你可以阅读关于它[这里](http://stackoverflow.com/questions/130794/what-is-dependency-injection)。 –