Я хочу протестировать публичную функцию в классе 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