我正在尝试测试返回局部视图的ActionResult
。此操作将检查用户是否正在使用IE7或IE8,如果用户使用的是IE7或8,则会返回不同的部分。这是因为我们使用的java脚本与7或8不兼容所以我们将对待它的方式不同
我遗漏了模型创建,因为我只想关注Request.Browser.Type
。
public ActionResult ActionName(string listing)
{
if (model.Count > 1 && Request.Browser.Type != "IE8" && Request.Browser.Type != "IE7")
{
return PartialView("~/Areas/Features/Views/Video/MultiVideo.cshtml", model);
}
return PartialView("~/Areas/Features/Views/Video/SingleVideo.cshtml", model.FirstOrDefault());
}
最终我想知道两件事
Request.Browser.Type
?我尝试过:
var browser = new Mock<HttpContext>(MockBehavior.Strict);
browser.Setup(x => x.Request.Browser).Returns("IE9");
答案 0 :(得分:4)
我在写这个问题时回答了我自己的问题(我经常发现这个问题)。但是,我无法在其他任何地方找到这么多,所以我想我会分享我的解决方案。
在this的帮助下,我提出了这个问题,以便能够模拟浏览器类型
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);
我仍然不确定这是否是一个好主意或不在你的控制器中。任何想法将不胜感激。