Код: Выделить всё
public class ClassToTest
{
private readonly ILogger _logger;
public ClassToTest(ILogger logger)
{
_logger = logger;
}
public void Foo() => _logger.LogError(string.Empty);
}
Код: Выделить всё
public class ClassToTestTests
{
private readonly ClassToTest _classToTest;
private readonly Mock _loggerMock;
public ClassToTestTests()
{
_loggerMock = new Mock();
_classToTest = new ClassToTest(_loggerMock.Object);
}
[Fact]
public void TestFoo()
{
_classToTest.Foo();
_loggerMock.Verify(logger => logger.LogError(It.IsAny()), Times.Once);
}
}
System.NotSupportedException: неподдерживаемое выражение: logger =>
logger.LogError(It.IsAny(), new[] { })
System.NotSupportedException Неподдерживаемое выражение: logger =>
logger.LogError(It.IsAny(), new[] { }) Методы расширения
(здесь: LoggerExtensions.LogError) не могут использоваться в выражениях настройки/
проверки.
После некоторых исследований я узнал, что все методы журналирования являются всего лишь методами расширения. Moq не может настраивать методы расширения.
Я бы не хотел устанавливать дополнительные сторонние пакеты для решения этой проблемы. Есть ли какие-нибудь решения, позволяющие пройти тест?
Подробнее здесь: https://stackoverflow.com/questions/663 ... -using-moq