我在使用 Moq 进行模拟返回会话值集时遇到问题。使用以下内容
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;
});
}
}
当我尝试使用外部获取值时
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
做一些设置 Session["id"] 的事情
var sessionid = httpContext.Session["id"];
sessionid 结果是-1。但我可以使用获取设置的会话值
th.sessionValue
怎么了?我不能简单地通过起订量返回设定值吗?
我需要停止回答自己的问题。事实证明,我需要再次模拟 Session["id"] 像这样......
httpContext.SetupSet(x => x.Session["id"] = It.IsAny<long>())
.Callback((string name, object val) =>
{
sessionValue = (long)val;
httpContext.SetupGet(x => x.Session["id"]).Returns(sessionValue);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)