我有一个测试MVC控制器结果的单元测试。不幸的是,控制器使用了使用HttpContext.Request.IsLocal
的第三方库。我无法重构第三方库以使其使用HttpContextBase
。
我需要模拟这个,以便HttpContext.Request.IsLocal
返回true。关于如何实现这一点的任何想法?
答案 0 :(得分:1)
如果您使用的是高级版或更高版本的vs2012,请尝试查看microsoft.fakes。它应该适应你的情况。
一些阅读:
答案 1 :(得分:0)
虽然接受的解决方案适合您,但是有一些缺点,例如依赖于VS测试运行器,我在这里和那里使用nUnit(或其他框架)时遇到的一些问题,难以像构建服务器一样运行这些测试TeamCity等。
恕我直言,更好的方法是通过自己的填充程序/包装器隔离第三方lib,而不是直接在代码中使用静态方法。
是的,这是一个更多的工作,但是,如果以后你需要升级或替换第三方库,它会更容易 - 你只会修改包装器,而你的代码不会受到影响。< / p>