Quando si scrive l'unit test usando Moq in qualsiasi momento, chiamo lo Elmah.ErrorSignal.FromCurrentContext
che fallisce con un'eccezione di riferimento null. Sono in grado di prendere in giro il ControllerContext
e vorrei utilizzare solo un comando di log di errore come questo ..Elmah error logging FromCurrentContext si interrompe durante il test dell'unità
Elmah.ErrorSignal.FromContext(ControllerContext.HttpContext).Raise(e);
ma purtroppo la ControllerContext.HttpContext
è di tipo HttpContextBase
e non funzionerà con questo metodo la registrazione degli errori.
C'è un modo migliore per chiamare direttamente la registrazione degli errori di Elmah? Sfortunatamente l'oggetto Application.HttpContext
non può essere deriso (sotto l'esempio) o servirebbe allo stesso scopo.
Mock Application
e Application.HttpContext
:
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance)
.Returns(new Mock<HttpApplication>().Object);
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance.Context)
.Returns(new Mock<HttpContext>().Object);
errore prodotto:
configurazione non valido su un non-virtuale (superabile in VB) membro
correlati: [Come posso prendere in giro la routine ErrorSignal di Elmah?] (Http://stackoverflow.com/questions/1019833/how-can-i-mock-elmahs-errorsignal-routine) –