使用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