我有各种方法,我想使用 Visual Studio 的 C# 内置单元测试功能进行单元测试。事情进展得很顺利,但我遇到了一个场景,我想“存根”对特定函数调用的依赖。
即,我有一些采用以下格式的方法:
public class ClassWithMethodsIWantToUnitTest
{
public void myFcn(object someArg)
{
...
LoggerService.Instance.LogMessage("myMessage");
...
}
}
所以基本上,我希望我的单元测试能够简单地验证对“LogMessage”的调用是否已经发生。我不想实际检查日志文件或任何东西。我想要一种方法来查看 LoggerService 行是否已被击中并执行。
LoggerService 是一个单例,如果可能的话,我不想仅仅为了单元测试而修改代码。
根据这个问题的格式,在我看来,应该有可能以某种方式控制我的单元测试中的代码。换句话说,有没有办法让我制作一个伪造的 LogMessage 版本,以便我可以将它用于我的单元测试?如果可能的话,我不希望调用“真正的” LogMessage 函数。我只想测试代码是否命中了调用该函数的路径。
这有道理吗?这可能吗?