Вы можете только издеваться над виртуальными методами. Но если вы создаете какой-то интерфейс для ведения журнала, а затем реализуете его с помощью NLog, вы можете использовать внедрение зависимостей, а в ваших тестах использовать смоделированный интерфейс, чтобы посмотреть, регистрирует ли тестируемая система (SUT), что вы ожидаете, что она будет регистрировать.
public class SUT
{
private readonly ILogger logger;
SUT(ILogger logger) { this.logger = logger;}
MethodUnderTest() {
// ...
logger.LogSomething();
// ...
}
}
// and in tests
var mockLogger = new MockLogger();
var sut = new SUT(mockLogger);
sut.MethodUnderTest();
Assert.That("Expected log message", Is.Equal.To(mockLogger.LastLoggedMessage));