尝试为 ASP.Net Core 3.1 单元测试创​​建 Mock.Of() 时出错

2023-12-10

根据最小起订量快速入门的最后一部分定义here,我尝试配置以下模拟,以便将表单值传递给被测试的控制器方法:

var formCollection = new FormCollection(
                new System.Collections.Generic.Dictionary<string, Microsoft.Extensions.Primitives.StringValues>()
            {
                    {"mAction", "someAction" },
                    {"mRefId", "0" }
            });

        var controllerContext = Mock.Of<ControllerContext>(ctx =>
            ctx.HttpContext.Request.Form == formCollection);
        
        controller.ControllerContext = controllerContext;

但是,当运行测试时,它失败了Mock.Of<>出现以下错误:

System.NotSupportedException:不支持的表达式:mock => mock.HttpContext

不可重写的成员(此处:ActionContext.get_HttpContext)不得在设置/验证表达式中使用。

我缺少什么?我是否按照快速入门文档中定义的示例执行相同的操作?


错误是因为ControllerContext.HttpContext财产不是virtual,因此 Moq 无法覆盖它。

考虑使用实际的ControllerContext并嘲笑一个HttpContext分配给该属性

var formCollection = new FormCollection(new Dictionary<string, StringValues>()
    {
        {"mAction", "someAction" },
        {"mRefId", "0" }
    });

var controllerContext = new ControllerContext() {
    HttpContext = Mock.Of<HttpContext>(ctx => ctx.Request.Form == formCollection)
};

controller.ControllerContext = controllerContext;

//...

或者甚至使用DefaultHttpContext并分配所需的值

var formCollection = new FormCollection(new Dictionary<string, StringValues>()
    {
        {"mAction", "someAction" },
        {"mRefId", "0" }
    });

HttpContext httpContext = new DefaultHttpContext();
httpContext.Request.Form = formCollection;

var controllerContext = new ControllerContext() {
    HttpContext = httpContext
};

controller.ControllerContext = controllerContext;

//...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试为 ASP.Net Core 3.1 单元测试创​​建 Mock.Of() 时出错 的相关文章

随机推荐

  • BulkInsertCommand 在 Sync Framework 2.1 中失败

    有时 当我尝试使用 Sync Framework 2 1 从 SQL Express 同步到 SQL Server 时 会收到以下错误 一旦客户端收到此错误 他们必须重新初始化作用域 语法不会有任何问题 比如错误状态 因为它在很长一段时间内
  • 发布同名nuget包时在.net vNext中引用本地项目

    我正在尝试在 VS 2015 中使用新的 vNext 项目类型构建一个包 我想在同一解决方案 不是 vNext 中引用一个项目 但它试图为该项目找到一个 nuget 包 而不是直接引用它 我究竟做错了什么 version 1 0 0 dep
  • 在 Dreamweaver CS 5.5 中设置 codeigniter

    我正在寻找有关如何在 Dreamweaver CS 5 5 中设置代码点火器项目的信息 并像 Zend 框架一样使用代码提示 我成功地在 Dreamweaver CS5 5 中设置了 code igniter 方法是下载最新版本的 code
  • 使用 Python 3.6 抓取 Duckduckgo

    一个简单的问题 我可以从 duckduckgo 搜索的第一页抓取结果 然而 我正在努力进入第二页和后续页面 我已将 Python 与 Selenium Webdriver 结合使用 这对于首页结果来说效果很好 我用来抓取第一页的代码是 re
  • iPhone6(无显示缩放模式)UIMenuController 被截断

    我有一个问题UIMenuController在我的 iPhone 6 上 当我使用标准显示模式并且设备处于横向模式时 在 iPhone 6 Plus 上 两种模式都会出现问题 也许这取决于屏幕分辨率 在这种情况下 UIMenuControl
  • Keras 后端 - ImportError:无法导入名称 ctc_ops

    我已经安装了 keras 但是当我编写 import keras 时 出现错误 导入错误 无法导入名称 ctc ops 我想将后端从张量流更改为 theano 但找不到此处提到的 keras json https keras io back
  • 通过在彼此之间嵌套子查询来解决 MySQL 中 61 个表 JOIN 的限制

    我发现你可以通过使用子查询来绕过 MySQL 中 61 个表连接的限制 https stackoverflow com a 20134402 2843690 我正在想办法easily在我正在开发的程序中使用它来从 Magento 获取详细的
  • 将调试信息嵌入到构建中不包含任何调试符号

    在我的项目中 在 构建 高级 部分中 我设置了 调试信息 嵌入 另外 我还设置了一个选项将我的项目打包为 nupkg 文件 由于项目已构建 因此创建了一个 nupkg 文件 但是当我在调试另一个项目时使用此 nupkg 文件时 不包含任何符
  • 序列与同一性

    SQL Server 2012 推出Sequence作为一项新功能 与 Oracle 和 Postgres 中的相同 在哪些情况下序列优先于身份 为什么我们需要序列 我想你会找到你的答案here 使用列的标识属性 您可以轻松生成 自动递增数
  • MVC(ASP.NET MVC)带3层架构如何协同工作?

    我正在编写一个设计文档 我的团队中的人员愿意从 ASP NET WebForm 迁移到 ASP NET MVC 这很棒 但我很难理解 MVC 如何在 3 层 数据层 业务层和表示层 架构中工作 我们可以说模型 视图和控制器是表示层的一部分吗
  • 绝对导入包中的 python ModuleNotFoundError 错误?

    我有这样的文件结构 E test M2 demo py MA MA1 init py ma1 py init py ma1 py def foo print I am here demo py from MA MA1 ma1 import
  • 动态地将不同尺寸的并排图像调整为相同的高度

    我在块级容器中有两个并排的图像 尺寸任意不同 例如 它们可以是任意两个图像 我想动态调整其宽度 以便两个图像的总高度是相同的 我不think从我所见过的一切中 这都可以在 CSS 中完成 虽然可能使用 Flexbox 模型 但我对此了解不够
  • 会话刷新后,我仍然可以访问 Sitecore 联系面吗?

    我希望我没有搞错 一如既往 sitecore 文档很糟糕 我想要一种针对访问者存储信息的方法 我对 sitecore 相当陌生 但是接触面似乎是理想的解决方案 几乎从上面的链接中逐字逐句地实现了 直到它投入生产 我对此非常满意 当我存储信息
  • WCF 中的信息重用

    在阅读 SOA 文章时 我发现了一篇文章http www ibm com developerworks websphere library techarticles 0806 boughannam 0806 boughannam html
  • 在 LESS 中改变多个相似元素的颜色最有效的方法是什么?

    我有一个收藏li 每个都有不同的背景颜色 如下所示 menu white background color product white color darken product white 20 menu green background
  • 检查 mysqli_query 是否返回任何值?

    我有以下代码 我想知道是否mysqli query返回任何行 如果是则返回错误 result mysqli query connection SELECT FROM users if result echo No records found
  • Delphi + iOS:如何声明简单的 ObjC 类?

    如何在 Delphi Firemonkey XE5 或 XE6 中声明一个简单的 ObjC 类 我想创建一个动画委托类 并在该类中包含一些委托方法 Thanks 使用您的方法创建一个接口并从 IObjectiveC 派生 还要创建一个指南
  • 在 CentOS 6.5 上安装 Matplotlib

    我正在尝试使用 Python 2 7 8 在 CentOS 6 5 上安装 matplotlib 1 4 0 我尝试过使用 pip 和从源代码安装 我最初收到一条错误消息 指出我需要更新版本的 Freetype2 然后我将其安装 版本 2
  • 我可以使用 JavascriptSerializer 反序列化为不可变对象吗?

    using System Web Script Serialization JavaScriptSerializer 我可以以某种方式反序列化为不可变对象吗 public class Item public Uri ImageUri get
  • 尝试为 ASP.Net Core 3.1 单元测试创​​建 Mock.Of() 时出错

    根据最小起订量快速入门的最后一部分定义here 我尝试配置以下模拟 以便将表单值传递给被测试的控制器方法 var formCollection new FormCollection new System Collections Generi