我正在使用MvcContrib.TestHelper:
[TestMethod]
public void LogOut() {
// Arrange
var controller = new AdminController(new AdminLogics(new AdminRepositoryStub()));
var builder = new TestControllerBuilder();
builder.InitializeController(controller);
controller.Session["AdminIsLoggedIn"] = true;
// Act
var result = (RedirectToRouteResult)controller.LogOut();
// Assert
Assert.IsFalse((bool)controller.Session["AdminIsLoggedIn"]);
}
然而断言失败,因为会话var没有被覆盖。
这里的控制器:
public ActionResult LogOut() {
Session["AdminIsLoggedIn"] = false;
return RedirectToAction("List", "Catalogue");
}
答案 0 :(得分:1)
只有在HttpContext的上下文中运行时才能访问会话变量。您的测试方法未在HttpContext下运行。这将很难测试,但也许这篇文章可以帮助你。
http://haacked.com/archive/2005/06/11/simulating_httpcontext.aspx