MVC3中的单元测试控制器会话变量

Tob*_*ias 4 session unit-testing controller asp.net-mvc-3

我正在测试我的控制器.

在我的一个控制器方法中,我设置了Session变量:

 public void Index(){
      Session["foo"] = "bar";

      return View();
 }
Run Code Online (Sandbox Code Playgroud)

我怎样才能对此进行单元测试?问题是测试时Session属性为null.无法进行注入,因为Session属性是只读的.

 [TestMethod]
 public void TestIndex()
     // When
     _controller.Index();

     // Then
     Assert.AreEqual("bar", _controller.Session["foo"])
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 7

我个人喜欢使用MvcContrib TestHelper模拟所有HTTP管道:

[TestMethod]
public void HomeController_Index_Action_Should_Store_Bar_In_Session()
{
    // arrange
    var sut = new HomeController();
    new TestControllerBuilder().InitializeController(sut);

    // act
    sut.Index();

    // assert
    Assert.AreEqual("bar", (string)sut.Session["foo"]);
}
Run Code Online (Sandbox Code Playgroud)