Asp.net mvc 3 模拟请求.Browser.Type单元测试
我正在尝试测试返回部分视图的ActionResult。此操作检查用户是否正在使用IE7或IE8,如果用户正在使用IE7或IE8,则将返回不同的部分。这是因为我们正在使用的java脚本不太适合7或8,因此我们将以不同的方式对待它 我忽略了模型创建,因为我只想关注Request.Browser.Type 最终我想知道两件事 如果有的话,如何模拟Request.Browser.Type? 在你的控制器里这样做是不是很好?如果不是,什么解决方案会更好? 我所尝试的: var browser=新的mockbehavior.Strict;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
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);
我仍然不确定这是否是一个好主意或不做在您的控制器。如有任何想法,将不胜感激