我的测试如下:
[Test]
public void LoggerTest()
{
var log = Substitute.For<Logger>();
log.DidNotReceiveWithAnyArgs().Info("");
log.ReceivedWithAnyArgs().Info("");
}
测试成功,显然不应该。据我所知,这是根据NSubstitue网站的语法。 谁能告诉我问题出在哪里?
我在NuGet包管理器的1.7.2.0版本中使用NSubstitue。
答案 0 :(得分:0)
NLog.Logger是一个具有非虚拟成员的具体类,因此NSubstitute将无法使用它(请参阅Creating a substitute上的注释)。
如果您需要测试日志记录,则一个选项是将日志功能包装在您自己的特定于应用程序的界面中。这样可以更容易地在新的记录器中替换以进行测试(可以使用NSubstitute或其他模拟库,或者为您的测试目的手动编写自己的TestLogger
)。