起订量嘲讽和跟踪会话值 [英] Moq Mocking and tracking Session values

查看:119
本文介绍了起订量嘲讽和跟踪会话值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在返回使用起订量嘲讽设置会话值的问题。使用以下

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆