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 ?
- Verwenden Sie Spöttisch. zum schnellen nachschlagen weblogs.asp.net/bleroy/archive/2009/06/15/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Mock. Hier ist, wie ich vorher getan haben.
Download aktualisiert MoQ https://www.nuget.org/packages/moq
Moc-Sitzung für den controller
Registrieren mockControllerContext für controller
Endlich Zu Handeln
So, würde der code so etwas wie dieses.