Comment puis-je me moquer de la routine ErrorSignal d'Elmah?
-
06-07-2019 - |
Question
Nous utilisons ELMAH pour gérer les erreurs dans notre application ASP.Net MVC c # et dans nos exceptions interceptées, nous procédons comme suit:
ErrorSignal.FromCurrentContext().Raise(exception);
mais lorsque j'essaie de tester un peu les exceptions interceptées, le message suivant s'affiche:
System.ArgumentNullException: Value cannot be null.
Parameter name: context
Comment puis-je me moquer de l'appel FromCurrentContext ()? Y a-t-il autre chose que je devrais faire à la place?
FYI ... Nous utilisons actuellement Moq et RhinoMocks.
Merci!
La solution
Étant donné que la méthode FromCurrentContext ()
est une méthode statique, vous ne pouvez pas simplement vous moquer de son appel. Vous avez deux autres options.
-
Comme
FromCurrentContext ()
effectue un appel interne àHttpContext.Current
, vous pouvez y insérer un contexte factice. Par exemple:SimpleWorkerRequest request = new SimpleWorkerRequest( "/blah", @"c:\inetpub\wwwroot\blah", "blah.html", null, new StringWriter()); HttpContext.Current= new HttpContext(request);
Avec cela, l'exception ne devrait plus être levée puisque
HttpContext.Current
n'est pas null. -
Créez une classe wrapper autour de l'appel à Raise et simulez la classe wrapper.
public class ErrorSignaler { public virtual void SignalFromCurrentContext(Exception e) { if (HttpContext.Current != null) Elmah.ErrorSignal.FromCurrentContext().Raise(e); } }