使用Moq随时编写单元测试时,我会调用Elmah.ErrorSignal.FromCurrentContext
,它会失败并返回空引用异常。我可以嘲笑ControllerContext
,我想只用一个错误日志命令,这样的..Elmah错误日志记录FromCurrentContext在单元测试时中断
Elmah.ErrorSignal.FromContext(ControllerContext.HttpContext).Raise(e);
可惜ControllerContext.HttpContext
是HttpContextBase
型的,不会与此错误测井方法工作。
有没有更好的方法直接调用Elmah错误日志记录?不幸的是,Application.HttpContext
对象不能被模拟(下面的例子),或者这也可以达到目的。
Application
模拟和Application.HttpContext
:
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance)
.Returns(new Mock<HttpApplication>().Object);
ctrlCtx.SetupGet(x => x.HttpContext.ApplicationInstance.Context)
.Returns(new Mock<HttpContext>().Object);
错误制作人:
在非虚拟(在VB重写)构件无效设置
相关:[我如何模拟Elmah的ErrorSignal例程?](http://stackoverflow.com/questions/1019833/how-can-i-mock-elmahs-errorsignal-routine) – 2014-12-17 10:14:58