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