asp.net-mvc – ASP.NET MVC单元测试控制器与HttpContext
发布时间:2020-05-23 09:49:59 所属栏目:asp.Net 来源:互联网
导读:我试图为我的一个控制器写一个单元测试,以验证视图是否正确返回,但此控制器有一个访问HttpContext.Current.Session的basecontroller。每次我创建一个新的我的控制器的实例是调用basecontroller构造函数和测试失败与一个空指针异常HttpContext.Current.Sessi
|
我试图为我的一个控制器写一个单元测试,以验证视图是否正确返回,但此控制器有一个访问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-mvc – Cookie不会被删除
- asp.net-mvc-4 – 创建和编辑MVC4的相同视图
- asp.net-mvc – ASP.NET MVC强类型部分视图,无法加载类型错
- asp.net-mvc – 使用asp.net MVC重定向到404页面
- asp.net-mvc – 区域在ASP.NET视图?
- asp.net – 如何在没有往返的情况下更新实体? (EF 4)
- asp.net-mvc-4 – 将nopcommerce 2.8升级到3.10
- ASP.NET Web应用程序的安装
- asp.net-mvc – ModelState.AddModelError未显示任何消息
- asp.net – HTTP错误500.23之后添加到我的本地网站dotless
推荐文章
站长推荐
- asp.net-mvc – 为什么这个MVC路由不起作用?
- asp.net-mvc – 具有预设值的Html.HiddenFor
- asp.net-core – 外部包中的模型显示在swagger文
- ASP.NET MVC学习教程之Razor语法
- asp.net-mvc-4 – ASP.NET MVC 4移动功能
- asp.net – SignalR/signalr/hubs 404未找到
- asp.net – 运行时从Microsoft.AspNet.WebApi.He
- 无法启动ASP.NET Development服务器,因为正在使用
- asp.net-mvc-3 – 如何从控制器设置布局
- asp.net – 是否可以在没有Javascript的情况下进
热点阅读
