任何时候使用 Moq 编写单元测试时,我调用Elmah.ErrorSignal.FromCurrentContext
它都会失败,并出现空引用异常。我能够模拟ControllerContext
并且我只想使用这样的错误日志命令..
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 中可覆盖)成员上的设置无效