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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top