Die Elmah-Fehlerprotokollierung FromCurrentContext bricht beim Komponententest ab

8

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.

%Vor%

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 :

%Vor%

Error Produziert:

Ungültiges Setup für ein nicht virtuelles Mitglied (überschreibbar in VB)

    
likestoski 18.05.2012, 18:33
quelle

2 Antworten

7

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.

    
likestoski 21.05.2012, 13:30
quelle
13

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

%Vor%

Andernfalls wird eine Ausnahme ausgelöst, weil der Anwendungsname NULL ist.

Weiter bearbeiten:
Hier ist der letzte Code in C #:

%Vor%     
danludwig 18.05.2012 21:05
quelle