Frage

Wir verwenden ELMAH für Fehler in unseren ASP.Net MVC c # Anwendung und in unserer gefangen Ausnahmen Handhabung wir tun so etwas wie folgt aus:

ErrorSignal.FromCurrentContext().Raise(exception);

aber wenn ich Unit-Test, die gefangenen Ausnahmen versuchen, erhalte ich diese Meldung:

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

Wie kann ich die FromCurrentContext () aufrufen, verspotten? Gibt es etwas, was ich stattdessen tun sollte?

Zu Ihrer Information ... Wir sind derzeit mit Moq und RhinoMocks.

Danke!

War es hilfreich?

Lösung

Da die FromCurrentContext() Methode eine statische Methode ist, kann man einfach nicht den Anruf, um es verspotten. Sie tun zwei andere Optionen haben.

  1. Da FromCurrentContext() intern einen Anruf Sie, dass ein gefälschten Kontext schieben können HttpContext.Current macht. Zum Beispiel:

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

    Damit sollte es nicht die Ausnahme wirft mehr da HttpContext.Current nicht null ist.

  2. Erstellen Sie eine Wrapper-Klasse um den Anruf zu heben und verspotten nur die Wrapper-Klasse.

    public class ErrorSignaler {
    
        public virtual void SignalFromCurrentContext(Exception e) {
            if (HttpContext.Current != null)
                Elmah.ErrorSignal.FromCurrentContext().Raise(e);
        } 
    }
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top