Pregunta

Estamos usando ELMAH para manejar errores en nuestra aplicación ASP.Net MVC c # y en nuestras excepciones detectadas, estamos haciendo algo como esto:

ErrorSignal.FromCurrentContext().Raise(exception);

pero cuando intento probar la unidad las excepciones detectadas, recibo este mensaje:

System.ArgumentNullException: Value cannot be null.
Parameter name: context

¿Cómo puedo burlarme de la llamada FromCurrentContext ()? ¿Hay algo más que debería hacer en su lugar?

FYI ... Actualmente estamos usando Moq y RhinoMocks.

¡Gracias!

¿Fue útil?

Solución

Dado que el método FromCurrentContext () es un método estático, no puede simplemente burlarse de la llamada. Tienes otras dos opciones.

  1. Dado que FromCurrentContext () realiza una llamada interna a HttpContext.Current puede insertar un contexto falso en eso. Por ejemplo:

    SimpleWorkerRequest request = new SimpleWorkerRequest(
        "/blah", @"c:\inetpub\wwwroot\blah", "blah.html", null, new StringWriter());
    
    HttpContext.Current= new HttpContext(request);
    

    Con esto ya no debería lanzar la excepción ya que HttpContext.Current no es nulo.

  2. Cree una clase de contenedor alrededor de la llamada a Raise y simplemente simule la clase de contenedor.

    public class ErrorSignaler {
    
        public virtual void SignalFromCurrentContext(Exception e) {
            if (HttpContext.Current != null)
                Elmah.ErrorSignal.FromCurrentContext().Raise(e);
        } 
    }
    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top