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!

Était-ce utile?

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.

  1. 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.

  2. 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);
        } 
    }
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top