Moqを使用したモックからセッション値セットを返す際に問題が発生しました。私はセッションを設定し、いくつかのものを行うMoqモッキングとトラッキングセッション値
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
を使用して外の値を取得しようとすると
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;
});
}
}
を以下の[ "ID"]
var sessionid = httpContext.Session["id"];
セッションIDを使用することが判明しました-1になります。しかし、私は設定セッション値を取得することができます
th.sessionValue
何が問題なのですか? Moq経由で設定した値を返すことはできませんか?
これは私のためにはうまくいかなかった:@ Konamimamは.Callbackが起動しないことが正しいと思われる。正しいアプローチはここにあるようです:http://stackoverflow.com/a/2921695/213609 –