Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 莫清httpc_Asp.net_.net_Asp.net Mvc 4_Moq - Fatal编程技术网

Asp.net 莫清httpc

Asp.net 莫清httpc,asp.net,.net,asp.net-mvc-4,moq,Asp.net,.net,Asp.net Mvc 4,Moq,我有一个测试MVC控制器结果的单元测试。不幸的是,控制器使用的第三方库使用了HttpContext.Request.IsLocal。我无法重构第三方库以使其使用HttpContextBase 我需要模拟它,以便HttpContext.Request.IsLocal返回true。关于如何实现这一点有什么想法吗?如果您使用的是高级或更高版本的vs2012,请查看microsoft.fakes。它应该适合你的情况 一些阅读: 尽管公认的解决方案适合您,但也有一些缺点,如依赖VS测试运行程序、我在与nU

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


我需要模拟它,以便
HttpContext.Request.IsLocal
返回true。关于如何实现这一点有什么想法吗?

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

一些阅读:


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

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


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

您不能模拟第三方库吗?不确定您的单元测试中是否需要外部依赖项或任何依赖项。问题是,该方法是静态类中的静态方法,因此我唯一可以模仿它的方法是创建一个假的HttpContext。如果您使用的是高级或更高版本的vs2012,请尝试查看microsoft.fakes。它应该迎合你的需要situation@Slicksim这看起来好像会起作用。然而,谷歌的例子似乎有点缺乏。因此,如果这不是太多的要求,有可能看到一个例子吗?另外,如果您将此作为答案,我可以稍后将其标记为正确答案。我没有示例。对不起,我坚持使用专业版本,我从阅读中了解到,这正是微软打算使用Microsoft.Fakes的目的,以允许进行此类第三方测试。我可以举出一个例子,但直到今天晚上我回到自己的桌面,上面有一个更好的vs版本