我想在Manager类中测试公共功能。问题在于该函数在Manager类的构造函数中调用。因此,当我创建Manager的新实例时,该函数也称为。
这里有2个类:一个是Manager类,一个是ManagerTest类,用于测试Manager。
Class Manager.cs
public class Manager
{
public Manager(ILogger logger, IMonitor monitor)
{
//do stuff
MethodNeedToBeTested();
}
public void MethodNeedToBeTested()
{
}
}
Class ManagerTest.cs
[TestClass]
public class ManagerTest
{
[TestMethod]
[DataTestMethod]
public async Task TestMethod()
{
using (ShimsContext.Create())
{
ShimManager.AllInstances.MethodNeedToBeTested = ()=>
{
//shim method here
};
Manager mng= new Manager(_logger, _monitor);
mng.MethodNeedToBeTested(); // the problem is that this line goes directly to the shim above, it doesn't go to the real MethodNeedToBeTested()
}
}
所以基本上,我只想第一次填充MethodNeedToBeTested()方法(调用构造函数时)。
第二次调用MethodNeedToBeTested方法时,它将转到真正的MethodNeedToBeTested()函数,而不是Shim