C# 最小起订量:最小起订量已设置,但不认为已调用

C# 最小起订量:最小起订量已设置,但不认为已调用,c#,unit-testing,moq,C#,Unit Testing,Moq,我有一个带有Log函数的类,出于测试目的,它只返回true public SomeClass : ILogger { // Other functions public bool Log() { return true; } } 然而,在我的单元测试中,我有以下几点: Mock<ILogger> logger = new Mock<ILogger>(); logger.Setup(func => func.L

我有一个带有Log函数的类,出于测试目的,它只返回true

public SomeClass : ILogger
{
    // Other functions

    public bool Log()
    {
        return true;
    }

}
然而,在我的单元测试中,我有以下几点:

 Mock<ILogger> logger = new Mock<ILogger>();
 logger.Setup(func => func.Log()).Returns(() => false).Verifiable();

 SomeClass testMe = new SomeClass(logger.Object);
 bool result = testMe.Log();

 logger.Verify(); //This fails saying that the Log function was never called

bool结果没有设置为false,而是设置为true。这让我相信我的设置是不正确的。是这样吗?

这是因为您尚未调用注入记录器实例的Log方法。在SomeClass日志方法中调用logger.Log

public SomeClass : ILogger
{
    private ILogger logger;
    // Other functions

    public SomeClass(ILogger logger)
    {
     this.logger = logger;
    }    

    public bool Log()
    {
        return logger.Log();
        //return true;
    }
}

这是因为您尚未调用注入的记录器实例的Log方法。在SomeClass日志方法中调用logger.Log请提供在SomeClass上声明的方法日志的实现。很可能您没有调用记录器的log函数。