模仿NLog记录器的NSubstitute失败

时间:2014-07-28 12:25:13

标签: 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。

1 个答案:

答案 0 :(得分:0)

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

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