Pregunta
Me visto este post pero yo soy una especie de confusión por ella.
¿Cómo puedo burlarse de rutina ErrorSignal de Elmah?
Estoy buscando en la opción 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);
}
}
Estoy un poco confundido, aunque por el hecho de que esto no parece para implementar una interfaz y no estoy realmente seguro de por qué parece estar en su lugar para algún tipo de herencia.
Gracias
Solución
La idea aquí es que usted utilizaría la clase ErrorSignaler
en el código para señalar un error en lugar de invocar Elmah directamente. Cuando se ejecuta el código en las pruebas de unidad, porque HttpContext.Current
es nulo, no se utilizará el componente Elmah, y no habrá ninguna excepción de referencia nula.
También podría crear una interfaz ErrorSignaler
:
public interface IErrorSignaler
{
void SignalFromCurrentContext(Exception e);
}
De esta manera la aplicación utilizada para implementar IErrorSignaler
puede ser burlado en las pruebas de la unidad si es necesario.