Wenn ich Komponententests immer mit Moq schreibe, rufe ich Elmah.ErrorSignal.FromCurrentContext
auf und schieße mit einer Nullreferenz aus. Ich bin in der Lage, die ControllerContext
zu verspotten und ich würde gerne einen Fehlerprotokollbefehl wie diesen verwenden.
aber leider ist ControllerContext.HttpContext
vom Typ HttpContextBase
und funktioniert nicht mit dieser Fehlerprotokollierungsmethode.
Gibt es eine bessere Möglichkeit, die Elmah-Fehlerprotokollierung direkt aufzurufen? Leider kann das Application.HttpContext
-Objekt nicht verspottet werden (unter Beispiel) oder das würde auch dem Zweck dienen.
Mock Application
und Application.HttpContext
:
Error Produziert:
Ungültiges Setup für ein nicht virtuelles Mitglied (überschreibbar in VB)
Eine Sache, die Sie tun können, um den Fehler in Elmah anders zu protokollieren, ist:
%Vor%Obwohl dies keinen Fehler aus dem Komponententest protokolliert, wird die Protokollierung im Komponententest zumindest übersprungen und der Fehler unter normalen Umständen trotzdem protokolliert.
Obwohl Sie HttpContext nicht vortäuschen können, können Sie HttpContext.Current in Ihrem Test einrichten.
%Vor%Ich bin mir nicht sicher, welche Teile des Kontextes von Elmah benutzt werden.
Bearbeitung durch Drittanbieter:
ELMAH erfordert auch System.Web.HttpContext.Current.ApplicationInstance
Andernfalls wird eine Ausnahme ausgelöst, weil der Anwendungsname NULL ist.
Weiter bearbeiten:
Hier ist der letzte Code in C #:
Tags und Links asp.net-mvc-3 unit-testing moq elmah