我需要为C#中抽象类中的内部或私有方法编写单元测试。
请考虑以下内容:
Public Abstract Class MyAbstractClass
{
Private String MyMethod()
{
//Do Something
return "HI";
}
}
还有,我的测试方法:
public void MyTestMethod()
{
var testProcessor = new Mock<MyAbstractClass>
{
CallBase = true
};
var privateType = new PrivateType(typeof(MyAbstractClass));
PrivateObject privateObject = new PrivateObject(testProcessor , privateType);
var resValue = (String)privateObject.Invoke("MyMethod");
Assert.AreEqual(resValue ,"HI");
}
但是当我运行测试方法时,我收到以下错误:
System.Reflection.TargetException: Object does not match target type.
如何解决这个问题?
Moq
,则应该传递模拟实例而不是模拟包装器... 因此:PrivateObject privateObject = new PrivateObject(testProcessor.Object , privateType);
可能是您想要的。 - lidqy