Je rencontre des problèmes pour renvoyer un jeu de valeurs de session à partir de moqueurs à l'aide de Moq. En utilisant les éléments suivantsMoq Mocking and tracking Valeurs de session
public class TestHelpers
{
public long sessionValue = -1;
public HttpContextBase FakeHttpContext()
{
var httpContext = new Mock<HttpContextBase>();
var session = new Mock<HttpSessionStateBase>();
httpContext.Setup(x => x.Session).Returns(session.Object);
httpContext.SetupGet(x => x.Session["id"]).Returns(sessionValue);
httpContext.SetupSet(x => x.Session["id"] = It.IsAny<long>())
.Callback((string name, object val) =>
{
sessionValue = (long)val;
});
}
}
Lorsque je tente d'obtenir la valeur à l'extérieur en utilisant
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
faire des choses qui définit session [ "id"]
var sessionid = httpContext.Session["id"];
sessionid se révèle être -1. Mais je peux obtenir la valeur de session définie en utilisant
th.sessionValue
Qu'est-ce qui ne va pas? Je ne peux pas simplement retourner la valeur définie via Moq?
Cela n'a pas fonctionné pour moi: @Konamimam semble être correct que le .Callback ne soit pas viré. La bonne approche semble être ici: http://stackoverflow.com/a/2921695/213609 –