testing - NSubstitute 模拟 NLog 记录器失败

标签 testing mocking nlog nsubstitute

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

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

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

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

最佳答案

NLog.Logger是一个具有非虚拟成员的具体类,因此 NSubstitute 将无法使用它(参见 Creating a substitute 上的注释)。

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

关于testing - NSubstitute 模拟 NLog 记录器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995222/

相关文章:

c# - NLog.Extended 从 2.0 升级到 4.6 后抛出 "Could not load type NLog.Web.NLogHttpModule"

安卓测试夹具

自定义测试命令的 Python setup.py 测试依赖项

c# - 在测试中模拟WPF中的鼠标移动

firefox - Selenium in -browserSessionReuse 模式启动一个新的浏览器

java - 模拟数据库驱动程序

javascript - 为什么 Jest 仍然需要模拟模块?

java - Mockito 与 JMockit 之间的比较 - 为什么 Mockito 比 JMockit 更好?

asp.net-core - NLog如何获取RequestId?

c# - 如何使用 NLog Elasticsearch Target 定义自定义字段