Microsoft 로깅에 의존하는 코드를 테스트하고 싶습니다. 조롱하거나 전달하려고합니다. 이 방법에서는 입력을 확인하고 있습니다.Microsoft.Practices.EnterpriseLibrary.Logging in MOQ 테스트를 건너 뜁니다.
"Logger 정적 클래스에 대해 LogWriter가 설정되지 않았습니다 .Logger.SetLogWriter 메서드를 호출하도록 설정하십시오."라는 오류 메시지가 나타납니다. 내 코드는 다음과 같습니다.
public HttpResponseMessage Patch(long Id)
{
using (new Tracer(GetType().Namespace))
{
EnterpriseHeader entHeader = Request.GetEnterpriseHeaders();
Request.LogApiRequestReceived(_logger, entHeader, GetType().Name);
Request.VerifyIdFormat((ulong)CustomerId);
_bussinessObject.PatchData(Id, entHeader);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
모의 방법에서 나는 아래 코드를 쓰고 있습니다. Ilogger는 내가 조롱 할 수있는 맞춤형 로거이지만 "New Tracer (Gettype(). NameSpace)"는 조롱 할 수 없습니다.
var mocklogger = new Mock<ILogger>();
var mockTracer = new Mock<ITracer>();
mockTracer.Setup(x => x.Tracer(GetType().Namespace));
var Controller = new Controller(mockBO.Object, mocklogger.Object);
Controller.Request = AddHttpRequestForHeaders();
var Results = Controller.GetById(1517, true, false);
이제 Moq에서 Tracer를 모의하고 싶습니다. "비가 상에 잘못된 설정을 (VB에서 재정의) 멤버 : 추가 정보 모의 => mock.GetType()"내가 MOQ에 obove 코드를 모의 경우
그것은 나를 즉 오류 제공
내 MOQ 코드는
var mockTracer = new Mock<Tracer>();
mockTracer.Setup(x => x.GetType().Namespace);
감사합니다,
로거 모의 테스트 단위 테스트하기가 어렵게 정적 클래스입니다. 테스트 중에 조롱 할 수있는 인터페이스 뒤에있는 로거를 추상화합니다. 코드 측면에서 더 많은 컨텍스트를 제공하십시오. 당신에게 좋은 대답을 줄 수있는 충분한 정보가 주어지지 않았습니다. – Nkosi
"New Tracer (GetType(). NameSpace)"를 모의 할 수 없습니다. 위의 코드를 참조하십시오. 감사 – yogs