Ich habe Probleme beim Zurückgeben einer Session-Wert-Set von Mock mit Moq. Unter Verwendung der folgendenMoq Mocking und Tracking Session-Werte
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;
});
}
}
Wenn ich versuche, den Wert zu erhalten, außerhalb
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
ein paar Sachen tun verwenden, die Session setzt [ "id"]
var sessionid = httpContext.Session["id"];
sessionid erweist sich sei -1. Aber ich kann den eingestellten Sitzungswert mit
th.sessionValue
erhalten Was ist los? Kann ich den Sollwert nicht einfach über Moq zurückgeben?
Das hat bei mir nicht funktioniert: @Konamimam scheint korrekt zu sein, dass der Callback nicht ausgelöst wird. Der richtige Ansatz scheint hier zu sein: http://stackoverflow.com/a/2921695/213609 –