2009-09-06 55 views
19

Sau khi đã tìm kiếm StackOverflow, và Google Tôi nghĩ rằng những gì tôi đang làm là giả sử để thể đúng, tuy nhiên kết quả dường như không được tiến triển tốtASP.NET MVC Đơn vị kiểm tra - phiên

[TestMethod] 
    public void LoginAction_Should_Return_View_and_User_Authenticated() 
    { 
     // Arrange 
     var mock = new Mock<ControllerContext>(); 
     var mockSession = new Mock<HttpSessionStateBase>(); 
     mock.Setup(p => p.HttpContext.Session).Returns(mockSession.Object); 

     var testData = FakeUserData.CreateTestUsers(); 
     var repository = new FakeUserRepository(testData); 
     var controller = new AccountController(repository); 
     controller.ControllerContext = mock.Object; 

     // Act 
     var result = controller.Login("testuser1", "testuser1"); 

     // Assert 
     Assert.AreEqual("testuser1", controller.HttpContext.Session["Username"]); 
     Assert.IsTrue((bool)controller.HttpContext.Session["IsAuthenticated"]); 
     Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult)); 
    } 

Khi tôi chạy kiểm tra giá trị của controller.HttpContext.Session ["Username"] là null, tuy nhiên tôi đặt giá trị cho username bằng cách sử dụng một trợ giúp Session. Tôi đang làm điều gì đó hoàn toàn sai, hay cái gì khác? Mọi sự trợ giúp sẽ rất được trân trọng.

+1

Cảm ơn bạn đã cho biết cách thử phiên của trình điều khiển :-) –

Trả lời

11

Sử dụng Mock.Verify để kiểm tra xem mã cơ bản có cố gắng đặt Phiên ["Tên người dùng"] hay không.

Nếu mã của bạn cần đặt biến phiên và sử dụng nó - hãy xem here.

Quickstart cũng là vô giá.

Các vấn đề liên quan