Tengo problemas para devolver un valor de sesión establecido desde la burla con Moq. Utilizando la siguienteMoq Mocking y tracking Valores de la sesión
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;
});
}
}
Cuando trato de obtener el valor fuera usando
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
hacer algunas cosas que establece Sesión [ "id"]
var sessionid = httpContext.Session["id"];
sessionid resulta ser -1. Pero puedo obtener el valor de la sesión establecida usando
th.sessionValue
¿Qué pasa? ¿No puedo simplemente devolver el valor establecido a través de Moq?
Esto no funcionó para mí: @Konamimam parece estar en lo cierto al decir que no se activa el .Callback. El enfoque correcto parece estar aquí: http://stackoverflow.com/a/2921695/213609 –