문제

우리는 ASP.NET MVC C# 응용 프로그램에서 오류를 처리하기 위해 Elmah를 사용하고 있으며 잡힌 예외에서 다음과 같은 작업을 수행하고 있습니다.

ErrorSignal.FromCurrentContext().Raise(exception);

그러나 잡힌 예외를 테스트하려고 할 때이 메시지를받습니다.

System.ArgumentNullException: Value cannot be null.
Parameter name: context

FromCurrentContext () 호출을 어떻게 조롱 할 수 있습니까? 내가 대신해야 할 다른 일이 있습니까?

참고로 우리는 현재 MOQ와 Rhinomocks를 사용하고 있습니다.

감사!

도움이 되었습니까?

해결책

이후 FromCurrentContext() 메소드는 단순히 전화를 조롱 할 수없는 정적 메소드입니다. 다른 두 가지 옵션이 있습니다.

  1. 부터 FromCurrentContext() 내부적으로 전화를합니다 HttpContext.Current 당신은 그것에 가짜 맥락을 추진할 수 있습니다. 예를 들어:

    SimpleWorkerRequest request = new SimpleWorkerRequest(
        "/blah", @"c:\inetpub\wwwroot\blah", "blah.html", null, new StringWriter());
    
    HttpContext.Current= new HttpContext(request);
    

    이것으로 더 이상 예외를 던져서는 안됩니다. HttpContext.Current 무효가 아닙니다.

  2. 통화 주위에 래퍼 클래스를 만들어 래퍼 클래스를 올리거나 조롱합니다.

    public class ErrorSignaler {
    
        public virtual void SignalFromCurrentContext(Exception e) {
            if (HttpContext.Current != null)
                Elmah.ErrorSignal.FromCurrentContext().Raise(e);
        } 
    }
    
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top