Come posso prendere in giro la routine ErrorSignal di Elmah?
-
06-07-2019 - |
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!
Soluzione
Poiché il metodo FromCurrentContext ()
è un metodo statico, non puoi semplicemente deridere la chiamata. Hai altre due opzioni.
-
Dato che
FromCurrentContext ()
effettua internamente una chiamata aHttpContext.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. -
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); } }