ОТКЛЮЧИТЬ АДБЛОК

ADBlock блокирует некоторый контент на сайте

ADBlock errore

Как я могу издеваться над процедурой Elmah ErrorSignal?

StackOverflow https://stackoverflow.com/questions/1019833

вопрос

Мы используем ELMAH для обработки ошибок в нашем приложении ASP.Net MVC c # и в наших перехваченных исключениях мы делаем что-то вроде этого:

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 не равен нулю.

  • Создайте класс-оболочку вокруг вызова Raise и просто смоделируйте класс-оболочку.

    public class ErrorSignaler {
    
        public virtual void SignalFromCurrentContext(Exception e) {
            if (HttpContext.Current != null)
                Elmah.ErrorSignal.FromCurrentContext().Raise(e);
        } 
    }
    
  • Licensed under: CC-BY-SA with attribution
    Not affiliated with StackOverflow