Moq 模拟和跟踪会话值

2023-12-05

我在使用 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(使用前将#替换为@)

Moq 模拟和跟踪会话值 的相关文章

随机推荐

  • View 类型中的方法 setOnClickListener(View.OnClickListener) 不适用于参数 (new DialogInterface.OnClickListener(){})

    尝试将 onClickListener 添加到我的 listView 中的项目中 但收到一条错误消息 The method setOnClickListener View OnClickListener in the type View i
  • Android - 如何将列表视图项目对齐以左右对齐?

    我正在尝试向 ListView 添加图像 使其看起来更像一个按钮 我希望图像小一点 也许是当前的 60 并且图像可以很好地排列在右侧的一列中 这是我目前拥有的屏幕 这是我的列表视图 xml
  • 通过顶点标签属性创建一个boostfiltered_graph

    目前 我有一个图表 我一直在跟踪它vertices and labels通过一个external map 因此 每当我需要访问标签属性时 我都会在地图中找到标签并获取mapped vertex vertex properties struc
  • 绘制、重新绘制、paintComponent

    对不起 我搜索了很多以找到这 3 个函数 paint repaint paintComponent 如何在它们之间交互 但我不知道 你能准确地解释一下他们什么时候被调用 因为有时java调用它而不需要我问他 他们到底做了什么以及他们之间有什
  • python Alexa结果解析与lxml.etree

    我正在使用 aws 的 Alexa api 但我发现很难解析结果以获得我想要的结果 alexa api返回一个对象树
  • 缓冲大文件; BufferedInputStream 限制为 2GB;数组限制为 2^31 字节

    我正在按顺序处理一个大文件 我想将其中很大一部分保留在内存中 64 位系统上有 16GB 内存可用 一个快速而肮脏的方法是简单地将输入流包装到缓冲输入流中 不幸的是 这只给了我一个 2GB 的缓冲区 我想记住更多的内容 我有什么选择 让操作
  • Android:ListView,圆角问题

    我有带有圆角的 ListView 如下所示
  • 使用 AngularJS 和 Slim PHP 进行路由

    我一直在使用 AngularJS 并且正在尝试将我的应用程序连接到它 到目前为止 我已经使用了 Slim PHP 可以从 MySql 数据库中获取所有记录 但无法获取特定记录 我已经编写了 PHP 代码 可以导航到 requests 并获取
  • 如何将库导入到 NetBeans 中的 Java 项目?

    我需要一个可以使用 Double 或 Float 数字而不是 int 数字创建多边形的类 嗯 我找到了here and 这是Jar文件下载 我提取了 Jar 并将其添加到 NetBeans 中的库中 但现在 我不知道如何将包导入到我的项目中
  • Freemarker 编码 - 用问号代替重音字符

    我正在尝试使用 Freemarker 打印重音字符 但在重音字符的位置 我只得到问号 我已经证实 以下陈述成立 UTF 8 Environment getCurrentEnvironment getConfiguration getDefa
  • 具有多个 gitlab 用户帐户的多个密钥的 SSH 配置

    我在我的服务器上运行 Gitlab CE 并使用多个不同的用户帐户按兴趣对我的存储库进行分组 问题出在 SSH 上 我在github上找到了以下解决方案 https gist github com jexchan 2351996 在本指南中
  • 二叉搜索树递归插入不显示任何内容

    我正在对二叉搜索树进行小型 Java 工作 但是当我实现将节点递归插入到树中并显示它时 我什么也得不到 我已经研究了一段时间了 我不确定 但我认为这是一个传递引用的问题 这是我的代码 public class BST private BST
  • 如何在ios中迭代JSON对象

    我像这样创建 json 对象 id json NSJSONSerialization JSONObjectWithData data options kNilOptions error error 但文档没有告诉我如何循环json对象由键和
  • C - malloc 分配过多内存

    运行 int 一个奇怪的场景 其中 malloc 分配的内存比我要求的多 void function int array int numberOfElements int secondArray malloc sizeof int numb
  • Servlet 过滤器:非常简单的限速过滤器,允许突发

    我想添加一个非常简单的过滤器 对每个 IP 进行速率限制 但仍然允许突发 有点像iptables允许做 我不想安装整个厨房水槽 我需要的只是一个实现该功能的 Filter 类 什么是允许执行简单的 速率限制但允许短突发 的良好数据结构 算法
  • RegSvr32.exe 的 /n 和 /i 参数有什么不同?

    要注册 COM 服务器 我们在提升模式下运行类似的命令 regsvr32 exe com dll 要执行每用户注册 请在用户帐户中执行 regsvr32 exe n i user com dll regsvr32 exe 支持以下参数 u
  • 在 Python 日志记录中跨多个模块访问记录器

    我有一个关于 python 日志记录模块的小问题 我有一个简单的记录器 记录器 basicConfig 如何使用 getLogger 访问同一个记录器 或者 getLogger 是否为我提供了一个我可以访问的日志记录对象 如果是这样 我如何
  • 在Python中比较整数中的数字

    这里确实需要一些帮助 学习 Python 的超级早 目标是获取一个数字并查看数字是否按升序排列 到目前为止我所拥有的是 a int input Enter a 4 digit number b int i for i in str a if
  • 转换日期格式 yyyy-MM-dd'T'HH:mm:ss.SSS

    我有几个NSDate包含符合此格式的值的对象yyy MM dd T HH mm ss SSS 当我尝试转换为不同的格式时 例如MMM dd yyyy HH mm格式化程序总是返回nil 但是 如果我对字符串值进行硬编码 我将通过NSDate
  • Moq 模拟和跟踪会话值

    我在使用 Moq 进行模拟返回会话值集时遇到问题 使用以下内容 public class TestHelpers public long sessionValue 1 public HttpContextBase FakeHttpConte