1

我有一个如下所示的测试:

[Test]
public void LoggerTest()
{
    var log = Substitute.For<Logger>();
    log.DidNotReceiveWithAnyArgs().Info("");
    log.ReceivedWithAnyArgs().Info("");
}

测试成功了,这显然不应该。据我所知,这是根据 NSubstitue 网站的语法。谁能告诉我问题出在哪里?

我在 NuGet 包管理器的 1.7.2.0 版本中使用 NSubstitue。

4

1 回答 1

0

NLog.Logger是具有非虚拟成员的具体类,因此 NSubstitute 将无法使用它(请参阅创建替代品的注释)。

如果您需要测试日志记录,一种选择是将日志功能包装在您自己的特定于应用程序的界面中。这使得在新的记录器中替换用于测试目的变得更容易(可以使用 NSubstitute 或其他模拟库,或者TestLogger为您的测试目的手动编写您自己的代码)。

于 2014-07-29T00:37:18.610 回答