0
我有一个类库,它有一个基于模板发送电子邮件的方法。我通过访问该模板以下几点:Moq'ing HttpContext.Current
HttpContext.Current.Server.MapPath("email template path");
现在,当谈到写我的单元测试中,我希望能够模拟出“当前上下文”,我曾尝试使用MVCMockHelpers但“当前”属性总是返回null。
是否有可能嘲笑这个属性?如果是这样,我该怎么办呢?
更具体地说,该类应该像路径提供程序类一样依赖于它,因为它访问静态Current属性的原因是调用HttpServerUtility MapPath方法。如果代码正在访问其他Current属性,那么它需要升级并抽象出HttpContext本身。 –
被引用的文章创建一个假的HttpContextBase而不是一个HttpContext。 – ThomasArdal
无处不在我在遗留代码中发现了这个问题,在消费代码中切换到使用'HttpContextBase'已经很简单了。之后,如果你曾经使用旧的'HttpContext',你可以简单地用'new HttpContextWrapper(someHttpContext)'包装它,然后它将作为'HttpContextBase'工作。也就是说,正如Daz/Sixto说的那样,如果可以帮助的话,那么肯定值得移除对任何类型的'HttpContext *'的依赖,以支持你需要的确切项目。 – patridge