Domanda

Stiamo usando ELMAH per gestire gli errori nella nostra applicazione ASP.Net MVC c # e nelle nostre eccezioni rilevate, stiamo facendo qualcosa del genere:

ErrorSignal.FromCurrentContext().Raise(exception);

ma quando provo a testare le eccezioni rilevate, ricevo questo messaggio:

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

Come posso prendere in giro la chiamata FromCurrentContext ()? C'è qualcos'altro che dovrei fare invece?

Cordiali saluti ... Attualmente stiamo utilizzando Moq e RhinoMocks.

Grazie!

È stato utile?

Soluzione

Poiché il metodo FromCurrentContext () è un metodo statico, non puoi semplicemente deridere la chiamata. Hai altre due opzioni.

  1. Dato che FromCurrentContext () effettua internamente una chiamata a HttpContext.Current , puoi inserire un contesto falso in questo. Ad esempio:

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

    Con questo non dovrebbe più generare l'eccezione poiché HttpContext.Current non è null.

  2. Crea una classe wrapper attorno alla chiamata a Raise e prendi in giro la classe wrapper.

    public class ErrorSignaler {
    
        public virtual void SignalFromCurrentContext(Exception e) {
            if (HttpContext.Current != null)
                Elmah.ErrorSignal.FromCurrentContext().Raise(e);
        } 
    }
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top