Al escribir pruebas de unidades con Moq cada vez que llamo al Elmah.ErrorSignal.FromCurrentContext
, falla con una excepción de referencia nula. Soy capaz de burlarse de la ControllerContext
y me gustaría sólo tiene que utilizar un comando de registro de errores como este ..Registro de errores de Elmah FromCurrentContext se rompe al probar la unidad
Elmah.ErrorSignal.FromContext(ControllerContext.HttpContext).Raise(e);
pero desafortunadamente el ControllerContext.HttpContext
es de tipo HttpContextBase
y no funcionará con este método de registro de errores.
¿Hay una mejor manera de llamar al registro de errores de Elmah directamente? Lamentablemente, el objeto Application.HttpContext
no se puede burlar (a continuación del ejemplo) o eso también serviría para el propósito.
Mock Application
y 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);
error producidos:
configuración no válida en un miembro no virtual (reemplazable en VB)
relacionado: [¿Cómo puedo simular la rutina ErrorSignal de Elmah?] (Http://stackoverflow.com/questions/1019833/how-can-i-mock-elmahs-errorsignal-routine) –