asp.net-mvc – ASP.NET MVC单元测试控制器与HttpContext
发布时间:2020-12-15 18:56:24 所属栏目:asp.Net 来源:网络整理
导读:我试图为我的一个控制器写一个单元测试,以验证视图是否正确返回,但此控制器有一个访问HttpContext.Current.Session的basecontroller。每次我创建一个新的我的控制器的实例是调用basecontroller构造函数和测试失败与一个空指针异常HttpContext.Current.Sess
我试图为我的一个控制器写一个单元测试,以验证视图是否正确返回,但此控制器有一个访问HttpContext.Current.Session的basecontroller。每次我创建一个新的我的控制器的实例是调用basecontroller构造函数和测试失败与一个空指针异常HttpContext.Current.Session。这里是代码:
public class BaseController : Controller { protected BaseController() { ViewData["UserID"] = HttpContext.Current.Session["UserID"]; } } public class IndexController : BaseController { public ActionResult Index() { return View("Index.aspx"); } } [TestMethod] public void Retrieve_IndexTest() { // Arrange const string expectedViewName = "Index"; IndexController controller = new IndexController(); // Act var result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result,"Should have returned a ViewResult"); Assert.AreEqual(expectedViewName,result.ViewName,"View name should have been {0}",expectedViewName); } 任何想法如何模拟(使用Moq)在基本控制器中访问的会话,以便后代控制器中的测试将运行? 解决方法
如果你使用
Typemock,你可以这样做:
Isolate.WhenCalled(()=>controller.HttpContext.Current.Session["UserID"]) .WillReturn("your id"); 测试代码将如下所示: [TestMethod] public void Retrieve_IndexTest() { // Arrange const string expectedViewName = "Index"; IndexController controller = new IndexController(); Isolate.WhenCalled(()=>controller.HttpContext.Current.Session["UserID"]) .WillReturn("your id"); // Act var result = controller.Index() as ViewResult; // Assert Assert.IsNotNull(result,"Should have returned a ViewResult"); Assert.AreEqual(expectedViewName,expectedViewName); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 有没有办法加快asp.net中的编辑 – 编译 – 调试周期?
- asp.net-mvc – 将依赖项注入自定义模型绑定器并使用Ninjec
- asp.net-mvc – ASP.Net MVC不显眼的日期范围验证
- ASP.NET:将ViewState移动到页面底部
- asp.net网站的“网站正在建设中”页面
- asp.net – 方法’Label’没有重载需要3个参数
- asp.net – 是否有一种简单的方法可以强制用户使用Internet
- asp.net – IFrame:此内容无法显示在一个框架中
- asp.net – 缓存特定的Javascript和CSS文件
- .net – 为什么HttpContext.Current.Handler为null?
推荐文章
站长推荐
- asp.net – 带有IE 11的ReportViewer 11:报告高
- 扩展ASP.NET数据缓存以在Web场之间共享
- asp.net-mvc – ASP.NET MVC – 结合Json结果与V
- IIS / .NET上的Blackberry推送服务启动器
- .net – 为每个操作设置MaxAllowedContentLength
- 如何在ASP.NET MVC 3中正确实施“确认密码”?
- asp.net-mvc-3 – 无法在ASP.NET MVC3的部分视图
- ASP.NET Web窗体:母版页和CSS文件
- asp.net-mvc – 为什么InitializeSimpleMembersh
- asp.net – WebForms中的强类型容器
热点阅读