首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何模拟Elmah的ErrorSignal例程?

如何模拟Elmah的ErrorSignal例程?
EN

Stack Overflow用户
提问于 2009-06-19 20:10:54
回答 1查看 2.9K关注 0票数 17

我们使用ELMAH来处理ASP.Net MVC c#应用程序中的错误,在捕获的异常中,我们这样做:

代码语言:javascript
复制
ErrorSignal.FromCurrentContext().Raise(exception);

但是当我尝试对捕获的异常进行单元测试时,我得到了这样的消息:

代码语言:javascript
复制
System.ArgumentNullException: Value cannot be null.
Parameter name: context

如何模拟FromCurrentContext()调用?有没有其他我应该做的事情呢?

仅供参考。我们目前使用的是Moq和RhinoMocks。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-11 20:07:34

因为FromCurrentContext()方法是一个静态方法,所以不能简单地模拟对它的调用。你确实有另外两个选择。

  1. 由于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} }

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1019833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档