Frage

ich diesen Beitrag gesehen, aber ich bin irgendwie verwirrt, indem sie es.

Wie kann ich Elmah die ErrorSignal Routine verspotten?

Ich bin auf der Suche Option 2

Create a wrapper class around the call to Raise and just mock out the wrapper class.

public class ErrorSignaler {

public virtual void SignalFromCurrentContext(Exception e) {
    if (HttpContext.Current != null)
        Elmah.ErrorSignal.FromCurrentContext().Raise(e);
}

}

Ich bin ein bisschen obwohl durch die Tatsache verwirrt, dass dies scheint nicht eine Schnittstelle zu implementieren, und ich bin nicht wirklich sicher, warum es für eine Art der Vererbung an Ort und Stelle zu sein scheint.

Danke

War es hilfreich?

Lösung

Die Idee dabei ist, dass Sie die ErrorSignaler Klasse in Ihrem Code verwenden würde einen Fehler anstelle des Aufrufens Elmah direkt zu signalisieren. Wenn Sie den Code in Unit-Tests laufen, weil HttpContext.Current null ist, wird die Elmah Komponente nicht verwendet werden, und es wird keine Nullverweis Ausnahmen.

Sie können auch eine ErrorSignaler Schnittstelle erstellen:

public interface IErrorSignaler
{
    void SignalFromCurrentContext(Exception e);
}

Auf diese Weise die Umsetzung IErrorSignaler zu implementieren in den Unit-Tests verspottet werden, wenn erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top