3
惩戒会话我试图用起订量来模拟控制器的会话变量。我继续运行到的是,该会议是从测试可见,但空的实际控制人内。在MVC 3
测试代码:
[TestMethod]
public void SessionTest()
{
var controller = new BaseController();
var controllerContext = new Mock<ControllerContext>();
controllerContext.Setup(cc => cc.HttpContext.Session["user"]).Returns(new User());
controller.ControllerContext = controllerContext.Object;
User currentUser = controller.CurrentUser; //fails (throws NullReferenceException)
User currentUser = (User)controller.Session["test"]; //works
}
控制器代码:
public User CurrentUser
{
get
{
return (User)Session["user"]; //HttpContext is null at this point
}
}
上面的代码如下我看到的最常见的模式(几个SO贴子,所述MVC 2在行动7章示例等),但仍然不起作用。控制器内部,ControllerContext空,因为是HttpContext的。我究竟做错了什么?
我刚刚创建了简单的解决方案重复你的问题,我不能复制。你正在使用什么版本的Moq? – Restuta 2011-03-02 22:50:44
我使用v4.0.10827.0。 – 2011-03-03 13:17:27