Ho problemi a restituire un valore di Session impostato da mocking utilizzando Moq. Utilizzando il seguenteMoq Mocking and tracking Valori di sessione
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;
});
}
}
Quando provo ad ottenere il valore esterno utilizzando
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
fare alcune cose che imposta Session [ "id"]
var sessionid = httpContext.Session["id"];
sessionid risulta essere -1. Ma posso ottenere il valore della sessione impostata utilizzando
th.sessionValue
Cosa c'è che non va? Non posso semplicemente restituire il valore impostato tramite Moq?
Questo non ha funzionato per me: @ Konamimam sembra essere corretto sul fatto che il .Callback non viene licenziato. L'approccio corretto sembra essere qui: http://stackoverflow.com/a/2921695/213609 –