Wie zu tun unit-test für die session-Werte?

Unten ist Stück den code der controller-Methode(c#) :-

public ActionResult SelectProduct(string ProdName, int Block, int ProductAddressId = 0)
{
       if (ProductAddressId == 0 && Block == 1 && System.Web.HttpContext.Current.Session["ReturnProductAddressID"] != null)
       {
           ProductAddressId = (int)System.Web.HttpContext.Current.Session["ReturnProductAddressID"]; 
       }
       //other stuffs………    
}

Unten ist unit-test Methode :-

   [TestMethod]
   public void SelectProduct_Condition1_Test()
   {
       //Arrange
       var controller = new ProductController();

       var prodName = string.Empty;
       var block = 1;
       var productAddressId = 0;

   //section 1
       /*var mockControllerContext = new Mock<ControllerContext>();
       var mockSession = new Mock<HttpSessionStateBase>();
       mockSession.SetupGet(s => s["ReturnProductAddressID"]).Returns("1");
       mockControllerContext.Setup(p => p.HttpContext.Session).Returns(mockSession.Object);*/

  //section 2
       /*int sessionValue = 1;
       var mockControllerContext = new Mock<ControllerContext>();
       var mockSession = new Mock<HttpSessionStateBase>();
       mockSession.SetupSet(s => s["ReturnProductAddressID"] = It.IsAny<int>()).Callback((string name, object val) => sessionValue = (int)val);
       mockSession.SetupGet(s => s["ReturnProductAddressID"]).Returns(() => sessionValue);
       mockControllerContext.Setup(p => p.HttpContext.Session).Returns(mockSession.Object);*/

       //Act         
       var actual = controller.SelectProduct(prodName,block,productAddressId);
 }

Ich möchte Fragen, wie kann ich testen oder simulieren der Sitzung, den Wert für Seite auf meiner action-Methode(in der if-Bedingung) ?

Habe ich versucht, bestimmte Dinge in Abschnitt 1 und Abschnitt 2(kommentierte Abschnitt in unit-test-Methode oben).Aber nichts für, die.

So kann jemand lassen Sie mich wissen, wie man unit Tests für Sitzungen ?

EDIT:

Nichts der oben genannten Dinge arbeiten, anstatt von unten :-

System.Web.HttpContext.Current.Session["ReturnProductAddressID"] = "12";

bedeutet, wenn ich den session-Wert direkt im unit-test-Methode.Aber ich möchte wissen, wird es der richtige Ansatz ?

InformationsquelleAutor Pawan | 2014-04-08
Schreibe einen Kommentar