Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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/1/wordpress/12.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 mvc 3 模拟请求.Browser.Type单元测试_Asp.net Mvc 3_Unit Testing_Mocking_Httpcontext - Fatal编程技术网

Asp.net mvc 3 模拟请求.Browser.Type单元测试

Asp.net mvc 3 模拟请求.Browser.Type单元测试,asp.net-mvc-3,unit-testing,mocking,httpcontext,Asp.net Mvc 3,Unit Testing,Mocking,Httpcontext,我正在尝试测试返回部分视图的ActionResult。此操作检查用户是否正在使用IE7或IE8,如果用户正在使用IE7或IE8,则将返回不同的部分。这是因为我们正在使用的java脚本不太适合7或8,因此我们将以不同的方式对待它 我忽略了模型创建,因为我只想关注Request.Browser.Type 最终我想知道两件事 如果有的话,如何模拟Request.Browser.Type? 在你的控制器里这样做是不是很好?如果不是,什么解决方案会更好? 我所尝试的: var browser=新的mock

我正在尝试测试返回部分视图的ActionResult。此操作检查用户是否正在使用IE7或IE8,如果用户正在使用IE7或IE8,则将返回不同的部分。这是因为我们正在使用的java脚本不太适合7或8,因此我们将以不同的方式对待它

我忽略了模型创建,因为我只想关注Request.Browser.Type

最终我想知道两件事

如果有的话,如何模拟Request.Browser.Type? 在你的控制器里这样做是不是很好?如果不是,什么解决方案会更好? 我所尝试的:

var browser=新的mockbehavior.Strict;
Setupx=>x.Request.browser.ReturnsIE9

我在写问题时回答了自己的问题,我发现这是我经常遇到的问题。然而,我在其他地方找不到太多关于这个的信息,所以我想我应该分享我的解决方案

在SO问题的帮助下,我想出了这个能够模拟浏览器类型的方法

        var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

        // This line would do the job
        request.Setup(b => b.Browser.Type).Returns("IE9");

        var context = new Mock<HttpContextBase>();
        context.SetupGet(c => c.Request).Returns(request.Object);

        controller.ControllerContext = new ControllerContext(
                                            context.Object,
                                            new RouteData(),
                                            controller);

我仍然不确定这是否是一个好主意或不做在您的控制器。如有任何想法,将不胜感激

我在写问题时回答了自己的问题,我发现这是我经常遇到的问题。然而,我在其他地方找不到太多关于这个的信息,所以我想我应该分享我的解决方案

在SO问题的帮助下,我想出了这个能够模拟浏览器类型的方法

        var request = new Mock<HttpRequestBase>(MockBehavior.Strict);

        // This line would do the job
        request.Setup(b => b.Browser.Type).Returns("IE9");

        var context = new Mock<HttpContextBase>();
        context.SetupGet(c => c.Request).Returns(request.Object);

        controller.ControllerContext = new ControllerContext(
                                            context.Object,
                                            new RouteData(),
                                            controller);
我仍然不确定这是否是一个好主意或不做在您的控制器。如有任何想法,将不胜感激