0

我有一个单元测试来测试 MVC 控制器的结果。不幸的是,控制器使用了第三方库,该库使用HttpContext.Request.IsLocal. 我无法重构第三方库以使其使用HttpContextBase.

我需要对此进行模拟,以便HttpContext.Request.IsLocal返回 true。关于如何实现这一目标的任何想法?

4

2 回答 2

1

如果您使用的是高级版或更高版本的 vs2012,请尝试查看 microsoft.fakes。它应该适合您的情况。

一些阅读:

http://msdn.microsoft.com/en-us/library/hh549175.aspx

于 2013-08-12T11:44:28.210 回答
0

尽管公认的解决方案对您有用,但也有一些缺点,例如对 VS 测试运行器的依赖、与 nUnit(或其他框架)一起使用时我在这里和那里阅读的一些问题、难以使用 TeamCity 等构建服务器运行这些测试等.

恕我直言,更好的方法是通过您自己的垫片/包装器隔离第三方库,而不是直接在您的代码中使用静态方法。

是的,这需要更多的工作,但是,如果以后您需要升级或替换第三方库,它会更容易——您将只修改包装器,而您的代码不会受到影响。

于 2013-08-27T18:23:19.933 回答