C#: ILogger를 단위 테스트하는 방법은 무엇입니까?
logger.LogError()
또는 logger.LogInformation()
는 확장된 메서드이므로 이러한 메서드를 직접 조롱할 수 없습니다.this stackoverflow 에 따르면 약간의 트릭으로 밑줄 방법을 사용하여 모의할 수 있습니다.
단위 테스트 logger.LogError
이것이 한 번만 호출되도록 logger.LogError
에 대한 단위 테스트를 작성하는 방법입니다.
Log 메서드는 내부 클래스인 세 번째 인수에서 FormattedLogValues
클래스 인스턴스를 사용하므로 인스턴스화할 수 없습니다. 따라서 나는 It.IsAny<It.IsAnyType>()
를 사용합니다.
Mock<MyService> mockedMyService = new();
mockedILogger.Verify(x => x.Log(
LogLevel.Error,
It.IsAny<EventId>(),
It.IsAny<It.IsAnyType>(),
It.IsAny<Exception>(),
It.IsAny<Func<It.IsAnyType, Exception?, string>>()),
Times.Once);
LogWarning
, LogInformation
와 같은 다른 확장 방법은 동일한 방식으로 작동합니다.
Reference
이 문제에 관하여(C#: ILogger를 단위 테스트하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kenakamu/c-how-to-unit-test-ilogger-in0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Mock<MyService> mockedMyService = new();
mockedILogger.Verify(x => x.Log(
LogLevel.Error,
It.IsAny<EventId>(),
It.IsAny<It.IsAnyType>(),
It.IsAny<Exception>(),
It.IsAny<Func<It.IsAnyType, Exception?, string>>()),
Times.Once);
Reference
이 문제에 관하여(C#: ILogger를 단위 테스트하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kenakamu/c-how-to-unit-test-ilogger-in0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)