unit test net mock example asp c# asp.net-mvc mocking elmah

c# - test - ¿Cómo puedo burlarme de la rutina ErrorSignal de Elmah?



unit test asp net web api controller (1)

Dado que el método FromCurrentContext() es un método estático, no puedes simplemente burlarte 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. Crea una clase de envoltorio alrededor de la llamada a Elevar y simplemente burla la clase de envoltorio.

    public class ErrorSignaler { public virtual void SignalFromCurrentContext(Exception e) { if (HttpContext.Current != null) Elmah.ErrorSignal.FromCurrentContext().Raise(e); } }

Estamos usando ELMAH para manejar los 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 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 estar haciendo en su lugar?

Para tu información ... Actualmente estamos usando Moq y RhinoMocks.

¡Gracias!