起订量嘲讽和跟踪会话值 [英] Moq Mocking and tracking Session values
本文介绍了起订量嘲讽和跟踪会话值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在返回使用起订量嘲讽设置会话值的问题。使用以下
I'm having problems returning a Session value set from mocking using Moq. Using the following
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;
});
}
}
当我试图获得境外使用值
When I try to obtain the value outside using
var th = new TestHelpers();
HttpContextBase httpContext = th.FakeHttpContext();
的做一些东西,设置会话[身份证] 的
var sessionid = httpContext.Session["id"];
的SessionID原来是-1。但我可以用得到设置会话值
sessionid turns out to be -1. But I can obtain the set session value using
th.sessionValue
有什么不对?我不能简单地通过起订量返回设定值?
What's wrong? Can't I simply return the set value via Moq?
推荐答案
我需要停下来回答我自己的问题。事实证明,我需要模拟会话[身份证]再次像这样...
I need to stop answering my own questions. It turns out that I needed to mock Session["id"] again like so ...
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);
});
这篇关于起订量嘲讽和跟踪会话值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文