如何模拟 httpcontext 使其在单元测试中不为 null?

2023-11-24

我正在编写一个单元测试,控制器方法抛出异常,因为 HttpContext / ControllerContext 为 null。我不需要断言 HttpContext 中的任何内容,只需要它不为 NULL 即可。我做了研究,我相信最小起订量就是答案。但我见过的所有样本并没有给我带来多大帮助。我不需要做任何花哨的事情,只需模拟 httpcontext 即可。给我指明正确的方向!


从以下位置得到这两个函数here在课堂上;

public static class HttpContextFactory
    {
        public static void SetFakeAuthenticatedControllerContext(this Controller controller)
        {

            var httpContext = FakeAuthenticatedHttpContext();
            ControllerContext context =
            new ControllerContext(
            new RequestContext(httpContext,
            new RouteData()), controller);
            controller.ControllerContext = context;

        }


        private static HttpContextBase FakeAuthenticatedHttpContext()
        {
            var context = new Mock<HttpContextBase>();
            var request = new Mock<HttpRequestBase>();
            var response = new Mock<HttpResponseBase>();
            var session = new Mock<HttpSessionStateBase>();
            var server = new Mock<HttpServerUtilityBase>();
            var user = new Mock<IPrincipal>();
            var identity = new Mock<IIdentity>();

            context.Setup(ctx => ctx.Request).Returns(request.Object);
            context.Setup(ctx => ctx.Response).Returns(response.Object);
            context.Setup(ctx => ctx.Session).Returns(session.Object);
            context.Setup(ctx => ctx.Server).Returns(server.Object);
            context.Setup(ctx => ctx.User).Returns(user.Object);
            user.Setup(ctx => ctx.Identity).Returns(identity.Object);
            identity.Setup(id => id.IsAuthenticated).Returns(true);
            identity.Setup(id => id.Name).Returns("a.ali174");

            return context.Object;
        }


    }

从单元测试中我这样称呼它们;

 HttpContextFactory.SetFakeAuthenticatedControllerContext(controller);

确保你有Moq安装在您的测试项目中:

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

如何模拟 httpcontext 使其在单元测试中不为 null? 的相关文章

  • Grails 测试中的模拟配置

    在 Grails 2 0 X 之前 可以使用mockConfig测试扩展的基类提供的方法 然而 在 Grails 2 0 X 中 建议测试类使用 TestFormixin 而不是扩展基类 这个 mixin 似乎没有提供任何与mockConf
  • C# 压力测试 - 模拟对给定共享资源的多次访问

    如何在 C 单元测试中模拟 压力测试 100 个用户访问给定的共享资源 例如数据库 假设您正在访问真实的数据库 那么您就处于集成测试的范围内 最简单的方法是从多个线程访问资源 例如 Test public void SimpleStress
  • 如何在 Razor 视图引擎中注册程序集

    我如何将其插入剃刀视图页面
  • asp.net mvc 3,主题(不同视图)

    我想向我的网站添加将使用完全不同视图的主题 我想在我的项目中看到它们 如下所示 Views Theme1 Views Theme2 而不是默认的 Views 当然 我需要一种简单的方法来在它们之间进行切换 所以问题是 如何让 ViewEng
  • 是否有用于运行测试组的 JUnit TestRunner?

    我目前正在使用 JUnit 4 并且需要将我的测试分为可以以任意组合有选择地运行的组 我知道 TestNG 具有注释测试以将它们分配到组的功能 但我现在无法迁移到 TestNG 看来这可以通过一些自定义注释和自定义 JUnit TestRu
  • 使用带有 OnException 定义的adviceWith进行Camel路由测试

    我有一个非常简单的 Camel 路由定义 其中只包含一些 OnException 谓词来处理相应的异常和一些日志语句 from hazelcast seda someQueue id someQueueID onException Cust
  • 在unittest.main()之后执行命令

    我从另一个 Python 脚本调用以下脚本 测试 py 日志文件 它应该运行测试并将结果保存在日志文件中 但由于某种原因 之后的命令unittest main testRunner runner 没有被执行 我什至不确定文件写入后是否会关闭
  • Ajax.BeginForm 可以重定向到新页面并传递路由值

    此链接显示如何重定向 Ajax BeginForm 但不显示如何将路由值传递到新视图 可以重定向到新页面的 Ajax BeginForm https stackoverflow com questions 9391201 ajax begi
  • 在 PyCharm 中禁用 Pytest

    如果我有一个以 test 开头的文件 PyCharm 会尝试使用 PyTest 运行该文件 我想正常运行它 作为常规 Python 脚本 我怎样才能做到这一点 Edit请参阅下面 Milo 的回答 如果由于某种原因这对您不起作用 正如 A
  • .NET 中有什么方法可以以编程方式侦听 HTTP 流量吗?

    我正在使用浏览器自动化来测试网站 但我需要验证来自浏览器的 HTTP 请求 即图像 外部脚本 XmlHttpRequest 对象 有没有一种方法可以以编程方式实例化代理以供浏览器使用以查看其发送的内容 我已经在使用 Fiddler 来监视流
  • ASP.NET MVC3:WebGrid + Ajax 过滤器 + Ajax 排序和分页

    基本上 我正在使用 WebGrid 并且需要过滤结果 我遇到的第一个问题是 这是我第一次使用 WebGrid 我希望你们中的一些人能够帮助我 到目前为止 我已经设法对网格结果进行排序并使用 Ajax 过滤它们 但是 当重新排序过滤后的结果
  • 每 4 个循环新表行

    如何在 Razor 视图中每 4 个循环创建一个新表行 这是为 4 之前的每个数字创建一个新行 然后停止创建新行 int i 0 foreach var item in ViewBag ProgramIdList if i 4 0 tr t
  • 尽管极其懒惰,但如何在 Python 中模拟 IMAP 服务器?

    我很好奇是否有一种简单的方法来模拟 IMAP 服务器 例如imaplib模块 在Python中 without做很多工作 是否有预先存在的解决方案 理想情况下 我可以连接到现有的 IMAP 服务器 进行转储 并让模拟服务器在真实的邮箱 电子
  • 如何使用 PowerMock 模拟返回 void 的静态方法?

    我的项目中有一些静态 util 方法 其中一些只是传递或抛出异常 有很多关于如何模拟返回类型不是 void 的静态方法的示例 但是我如何模拟一个将 void 返回为 的静态方法 doNothing 非空版本使用以下代码行 PrepareFo
  • 使用 Retrofit2 和 Mockito 或 Robolectric 进行 Android 单元测试

    我可以测试 Retrofit2beta4 的真实响应吗 我需要 Mockito 或 Robolectic 吗 我的项目中没有活动 它将是一个库 我需要测试服务器是否正确响应 现在我有这样的代码并卡住了 Mock ApiManager api
  • mvc显示模板中当前项目的索引

    我有一个带有显示模板的 mvc 页面 如何获取显示模板中呈现的当前项目的索引 它在名称属性中产生正确的可绑定结果
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 单元测试时 Android Studio 2.0 中测试状态终止且没有任何失败消息

    Issue 我昨天在 Ubuntu 上从 1 5 升级到了 Android Studio 2 0 当我在 Android Studio 2 0 中进行单元测试时 即使所有测试都已通过 它也会显示 终止测试 状态 有时它只显示部分测试通过 我
  • ASP.net C#,采用不同参数类型的同名方法[重复]

    这个问题在这里已经有答案了 可能的重复 可以在 ASP Net MVC 中重载控制器方法吗 https stackoverflow com questions 436866 can you overload controller metho
  • 当集合提交回控制器时,未将对象引用设置为对象的实例。错误

    我正在更新多条记录 单击提交按钮后出现错误 这表明控制器收到 NULL 并在第 36 行报告以下错误 下面是我的控制器 视图和模型的代码 你调用的对象是空的 描述 执行当前 Web 请求期间发生未处理的异常 请检查堆栈跟踪 有关该错误及其起

随机推荐

  • ajax加载tab后的回调

    如何将一些代码应用于 ajax 加载选项卡的内容 我尝试在加载的内容中使用 document ready 但这阻止了 css 样式的加载 不知道为什么 有回调函数吗 我应该以其他方式在加载的文档中使用 document ready 和样式吗
  • Matlab 中图例标记的高级定制

    It is relatively simple to add basic modifications to markers in matlab legends The legend produced by the following cod
  • 如何在Swing java中的JTable的一行中添加按钮

    我制作了一个 swing GUI 其中包含带有一些行和列的 JTable 我应该如何向 JTable 中的行添加一个按钮 您不将其添加到行中 而是将其添加到单元格中 本教程描述您需要什么
  • 使用 gradle 产品风味删除 AndroidManifest 元素

    我正在设置一个包含一些产品风格的 Android Gradle 项目 我想要
  • 将 CSV 值读入列表字典的最 Pythonic 方法

    我有一个 CSV 文件 其数据列顶部的标题如下 a b c 1 2 3 4 5 6 7 8 9 我需要在列表字典中阅读它 desired result a 1 4 7 b 2 5 8 c 3 6 9 当阅读本文时DictReader我正在使
  • Symfony Doctrine 数组结果的展平数组结果

    通过存储库 我得到了一个数组结果 每个数组都是一个实体对象 如下所示 array 0 gt object of type entity 1 gt another object of type entity 2 gt another obje
  • 如何在 MATLAB 中删除元胞数组内的零项?

    我在 MATLAB 中有一个元胞数组 可以说cell arr它有零条目和非零单元格条目 例如 cell arr 0 0 0 0 0 1x3 cell 1x3 cell 1x3 cell 1x3 cell 有人可以告诉我如何从cell arr
  • 从 Facebook 获取长期访问令牌

    据我了解 最近Facebook决定删除offline access权限 并引入了一种称为长期访问令牌的概念 该令牌的最长有效期为 60 天 有谁知道如何使用 Facebook JavaScript SDK 获取此访问令牌 有一种方法可以将其
  • VariableDoesNotExist:在 u'None' 中查找键 [val2] 失败

    我正在得到一个VariableDoesNotExist以下代码片段出现错误时obj1 page is None obj1 val1 default obj1 page val2 通常 Django 模板不关心属性访问None values
  • 父 DIV 中的圆角不影响子 DIV

    所以 我正在尝试在 CSS3 中使用圆角 不在 IE 中 不关心它是否在那里工作 并且我有一个 DIV 我的所有内容都在其中看起来非常漂亮 我遇到的问题是 有些子 DIV 没有被父级的圆角 掩盖 我不是在寻找孩子继承圆角 我只想让父级内部的
  • 检索 iOS 中按上次播放时间排序的歌曲列表

    我需要获得一份清单N按顺序最近从 iOS 设备播放的歌曲 目前我能想象的唯一方法就是将所有歌曲都通过一个MPMediaQuery并手动对它们进行排序lastPlayedDate 这是一项可能昂贵的操作 我想知道是否有更好的方法 编辑 经过一
  • 如何将枚举数组序列化为 Json 字符串数组? [复制]

    这个问题在这里已经有答案了 根据迭戈在这个问题中得票最高的答案下未答复的评论 枚举的 JSON 序列化为字符串 所以对于一个枚举 public enum ContactType Phone 0 Email 1 Mobile 2 例如 一个属
  • gnuplot:应用数据文件中的颜色名称

    如何从数据文件中获取颜色名称 我没想到这会如此困难 但显然确实如此 为什么版本 1 和版本 2 给出错误的颜色 有没有像版本 3 那样不使用数组的更简单的方法来获得正确的颜色 和 lc var仅适用于索引值 不适用于颜色名称 colorna
  • 下载大尺寸json时如何解决Uncaught RangeError

    我正在尝试下载大型 json 数据 但这导致Uncaught RangeError Invalid string length 请帮忙解决这个问题 提前致谢 这是 Jsfiddle http jsfiddle net sLq3F 456 您
  • 在 Weblogic 12.1.3 上找不到文件 Metro-default.xml

    我们当前在 WebLogic 12 1 2 上运行 在这个环境中我们的应用程序运行良好 我们现在想要的是将我们的应用程序与 WebLogic 12 1 3 环境进行认证 但我们所使用的 Web 服务面临着一个问题 在新版本中 服务器抛出异常
  • 使用给定的概率密度函数生成随机数

    我想指定概率密度函数的分布 然后在 Python 中从该分布中选取 N 个随机数 我该如何去做呢 一般来说 您需要逆累积概率密度函数 一旦你有了这个 那么沿着分布生成随机数就很简单了 import random def sample n r
  • “inline-style”-内容安全策略和 Javascript 错误

    我在 Apache2 配置中使用以下命令在服务器上打开了内容安全策略 Header set Content Security Policy Report Only default src self 我将其设置为 Report Only仅报告
  • 错误,无法设置范围类的 FormulaArray 属性

    我创建了以下公式 IFNA LOOKUP 10 99 MID O2 MIN IF ISNUMBER MID O2 ROW 1 25 1 0 ISNUMBER MID O2 ROW 2 26 1 ROW 2 26 ROW 1 25 SUMPR
  • 如何作为脉冲应用程序在表格之间复制单元格

    我需要复制单元格2 个表视图之间 我有一个或多或少可行的解决方案 然而 这并不顺利 我很想做类似的事情脉冲应用程序重新排序 Feed 选项 脉冲工作方式的特殊之处在于 重新排序动画与正常的单元格重新排序相同 但单元格仍然可以在表之间移动 这
  • 如何模拟 httpcontext 使其在单元测试中不为 null?

    我正在编写一个单元测试 控制器方法抛出异常 因为 HttpContext ControllerContext 为 null 我不需要断言 HttpContext 中的任何内容 只需要它不为 NULL 即可 我做了研究 我相信最小起订量就是答