Elmah의 Orrorsignal 루틴을 어떻게 조롱 할 수 있습니까?
-
06-07-2019 - |
문제
우리는 ASP.NET MVC C# 응용 프로그램에서 오류를 처리하기 위해 Elmah를 사용하고 있으며 잡힌 예외에서 다음과 같은 작업을 수행하고 있습니다.
ErrorSignal.FromCurrentContext().Raise(exception);
그러나 잡힌 예외를 테스트하려고 할 때이 메시지를받습니다.
System.ArgumentNullException: Value cannot be null.
Parameter name: context
FromCurrentContext () 호출을 어떻게 조롱 할 수 있습니까? 내가 대신해야 할 다른 일이 있습니까?
참고로 우리는 현재 MOQ와 Rhinomocks를 사용하고 있습니다.
감사!
해결책
이후 FromCurrentContext()
메소드는 단순히 전화를 조롱 할 수없는 정적 메소드입니다. 다른 두 가지 옵션이 있습니다.
부터
FromCurrentContext()
내부적으로 전화를합니다HttpContext.Current
당신은 그것에 가짜 맥락을 추진할 수 있습니다. 예를 들어:SimpleWorkerRequest request = new SimpleWorkerRequest( "/blah", @"c:\inetpub\wwwroot\blah", "blah.html", null, new StringWriter()); HttpContext.Current= new HttpContext(request);
이것으로 더 이상 예외를 던져서는 안됩니다.
HttpContext.Current
무효가 아닙니다.통화 주위에 래퍼 클래스를 만들어 래퍼 클래스를 올리거나 조롱합니다.
public class ErrorSignaler { public virtual void SignalFromCurrentContext(Exception e) { if (HttpContext.Current != null) Elmah.ErrorSignal.FromCurrentContext().Raise(e); } }
제휴하지 않습니다 StackOverflow