我的工作方法,需要测试:
using TCatSysManagerLib; // for TcSysManager
public static int ProcessPositionBias(TcSysManager tcsm)
{
// method body here
return 0;
}
现在在测试单元中我试图模拟TcSysManager,因为它适用于硬件,这在测试期间不可用,我甚至无法使用它:
namespace TestClient
{
[TestClass]
public class UnitTestClient
{
[TestMethod]
public void TestVersion()
{
Mock<TcSysManager> tcsm = new Mock<TcSysManager>();
int r = ClientProgram.ProcessPositionBias(tcsm.Object); // errors here
}
}
public TcSysManager
{
// I promise to implement some methods which I use in my app
}
}
基本上编译器抱怨有三件事:
错误1类型&#39; TCatSysManagerLib.TcSysManager&#39;定义在一个 未引用的程序集。您必须添加对程序集的引用 &#39; Interop.TCatSysManagerLib,Version = 1.1.0.0,Culture = neutral, 公钥=空&#39 ;.
错误2最佳重载方法匹配 &#39; Client.ClientProgram.ProcessPositionBias(TCatSysManagerLib.TcSysManager)&#39; 有一些无效的 参数
错误3参数1:无法转换为&#39; TestClient.TcSysManager&#39;至 &#39; TCatSysManagerLib.TcSysManager&#39;
答案 0 :(得分:0)
错误告诉你出了什么问题。你不能只给一个类型相同的名字,你需要与你所调用的方法完全相同的类型。
另一种方法是在TcSysManager
中引入一个接口,在单独的程序集中声明,并生成该接口的method参数的类型。