我们使用ELMAH来处理ASP.Net MVC c#应用程序中的错误,在捕获的异常中,我们这样做:
ErrorSignal.FromCurrentContext().Raise(exception);
但是当我尝试对捕获的异常进行单元测试时,我得到了这样的消息:
System.ArgumentNullException: Value cannot be null.
Parameter name: context
如何模拟FromCurrentContext()调用?有没有其他我应该做的事情呢?
仅供参考。我们目前使用的是Moq和RhinoMocks。
谢谢!
发布于 2009-08-11 20:07:34
因为FromCurrentContext()
方法是一个静态方法,所以不能简单地模拟对它的调用。你确实有另外两个选择。
FromCurrentContext()
在内部调用了HttpContext.Current
,因此您可以在其中推送一个假上下文。例如:SimpleWorkerRequest请求= new SimpleWorkerRequest( "/blah",@"c:\inetpub\wwwroot\blah","blah.html",null,new StringWriter());HttpContext.Current= new HttpContext( request );
这样它就不会再抛出异常了,因为HttpContext.Current
不是空的。
公共类Elmah.ErrorSignal.FromCurrentContext().Raise(e);{ public virtual void ErrorSignaler (Exception e) { if (HttpContext.Current != SignalFromCurrentContext)null} }
https://stackoverflow.com/questions/1019833
复制相似问题