ASP.NET 4.0 中的模拟 HttpRequest

2024-05-27

我见过很多类似的帖子,但没有一个能真正解决我的特殊情况。

我正在 ASP.NET 4.0 Web 应用程序(ASP.NET Forms,而不是 MVC)中编写单元测试。代码中有几个地方我称之为ServerVariables调用变量的集合,例如REMOTE_ADDR。由于我的单元测试实际上并未启动HttpRequests执行我的代码时,比如ServerVariables are Null因此当我尝试调用时出错HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")

我发现解决这个问题的所有解决方案都参考 MVC,因此他们假设HttpRequest源自于HttpRequestBase,它在 MVC 中执行,但在 ASP.NET Forms 中则不然。

我尝试使用Moq但你不能嘲笑密封类,并且HttpRequest不幸的是,它是密封的,没有接口。


The HttpRequestBase http://msdn.microsoft.com/en-us/library/system.web.httprequestbase.aspx and HttpRequestWrapper http://msdn.microsoft.com/en-us/library/system.web.httprequestwrapper.aspx只需做一些工作就可以使用类。

无论您当前在何处访问HttpContext.Current.Request——或者只是简单的Page.Request-- 你需要使用一个可注入的实例HttpRequestBase反而。然后你需要注入一个不同的子类HttpRequestBase取决于您是在测试还是在现场。

  • 对于实时代码,您可能会注入HttpRequestWrapper包装的实例HttpContext.Current.Request:

    var liveRequest = new HttpRequestWrapper(HttpContext.Current.Request);
    
  • 对于测试代码,您需要创建并注入您自己的模拟子类HttpRequestBase。想必 Moq 可以即时为您做到这一点。

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

ASP.NET 4.0 中的模拟 HttpRequest 的相关文章

  • 如何在 ASP.NET 中获取负载均衡器后面的主机名?

    我有几台服务器和一个负载均衡器 我想显示当前正在为该页面提供服务的服务器名称 我在用HttpContext Current Request ServerVariables SERVER NAME and HttpContext Curren
  • OWIN中间件可以使用http会话吗?

    我有一些为 ASP NET 和 SignalR 复制的代码 我决定将其重写为 OWIN 中间件以删除这些重复 一旦我运行它 我注意到HttpContext Current Session为空 并且我没有看到任何会话对象IOwinContex
  • 如何找到 IIS 在负载/性能测试期间模拟的平均并发用户数?

    我正在使用 JMeter 进行负载测试 我正在练习通过简单地增加我的分布式 JMeter 测试用例中的线程数并启动测试来查找我们的网络服务器可以处理的最大并发线程 用户 数量 然后 我突然意识到 虽然 MAX 数字可能有用 但REAL我的网
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • 如何在 Web 表单中进行 Html.Encode

    我有一个 ASP NET Web 窗体应用程序 有一个带有文本框的页面 用户在其中输入搜索词用于查询数据库 我知道我需要防止 JavaScript 注入攻击 我该怎么做呢 在 MVC 中我会使用Html Encode Web 表单中似乎无法
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 不支持 EF6 上下文类型“System.Data.Entity.Core.Objects.ObjectContext”

    我有一个使用 Visual Studio 2013 和 ADO NET 实体数据模型 EF6 创建的新项目 现在我必须使用一些动态数据函数 例如访问 MetaTable 对象 所以我添加以下代码 MetaModel model new Me
  • 如何强制 Visual Studio 2008 生成 Designer.cs,例如不管怎样.aspx.designer.cs

    我在使用 Visual Studio 2005 使用网站技术生成的 Asp Net V2 0 中有一些 Web 表单 想要将它们导入到设置为 v3 5 Asp Net MVC 的 Visual Studio 2008 我在其中使用项目技术
  • 单元测试时 Android Studio 2.0 中测试状态终止且没有任何失败消息

    Issue 我昨天在 Ubuntu 上从 1 5 升级到了 Android Studio 2 0 当我在 Android Studio 2 0 中进行单元测试时 即使所有测试都已通过 它也会显示 终止测试 状态 有时它只显示部分测试通过 我
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 锚标记 href 中的 eval

    我想要实现的目标是在锚标记的 href 中使用 Eval 作为参数 锚点嵌套在转发器内 为什么我不能使用后面的代码来实现这一点 我尝试了一些事情但没有运气 a href http MyWebsite ActiveUsers ID Inser
  • 从备用位置获取实体框架连接字符串?

    如何从自定义配置文件而不是 web config 检索 Entity Framework 4 连接字符串 编辑 删除默认构造函数生成的代码并在分部类中重新创建它以使用拉入的连接字符串是否合理 我真的很想避免使用包括连接字符串在内的重载方法更
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 缺少添加控制器/视图的上下文菜单

    我已将 ASP NET MVC 4 集成到现有的 asp net 网站中 两者都工作正常 但我没有看到任何菜单 快捷方式来在 Visual Studio IDE 中创建控制器 视图 这些仅适用于 ASP NET MVC 模板吗 这些仅适用于
  • C# 和匿名对象数组

    这样的表达是什么意思呢 obj DataSource new new Text Silverlight Count 10 Link Tags Silverlight new Text IIS 7 Count 11 Link http iis
  • 何时使用模拟框架?

    因此 我正在使用模拟框架 Moq 进行单元测试 并且想知道何时应该使用模拟框架 以下两个测试之间的优点 缺点是什么 public class Tests Fact public void TestWithMock Arrange var r
  • Coffeescript + 单元测试:全局变量?

    我正在尝试使用 Jasmine 对用 CoffeeScript 编写的小型应用程序进行单元测试 我发现很多资料都说单元测试可以在从 CoffeeScript 编译的 JS 上完美地完成 如果所有内容都包装在匿名函数中以避免污染名称空间 如何
  • 工作流程系统中的单元/自动化测试

    您是否对像 K2 这样的复杂工作流程系统进行自动化测试 我们正在构建一个在 Sharepoint 2007 和 K2 之间进行广泛集成的系统 我什至无法想象从哪里开始自动化测试 因为工作流程涉及多个用户与 Sharepoint K2 工作流
  • 服务器不支持 C# 中的安全连接

    我在下面的代码中收到错误 服务器不支持安全连接 SmtpClient smtp new SmtpClient MailMessage mail new MailMessage mail From new MailAddress gmail
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P

随机推荐

  • 在 R 中提取模式/分隔符之间的字符串

    我的变量名称格式如下 PP Sample 12 GT or PP Sample 17 GT 我正在尝试使用字符串拆分来 grep 出中间部分 即Sample 12 or Sample 17 但是 当我这样做时 IDtmp lt sapply
  • 在 Excel 工作簿中找不到链接

    我编写了一个宏来打开多个受密码保护的工作簿 这些工作簿彼此之间都有链接 因此为了方便起见 我设置了UpdateLinks 0这样在其他书籍打开之前 我就不会收到所有链接更新的密码提示 所有工作簿打开后 我尝试使用以下命令更新链接 Workb
  • SQLAlchemy ORM 从子查询中选择多个实体

    我需要查询多个实体 例如session query Entity1 Entity2 仅来自子查询而不是直接来自表 该文档有一些关于从子查询中选择一个实体 http docs sqlalchemy org en rel 0 8 orm tut
  • Bootstrap 词缀总是“跳跃”

    我想在我的侧边栏上使用 bootstrap 的 affix 插件 然而 由于我的网站是响应式的 它总是在某些维度上跳跃 我无法让它正常工作 我尝试了此处列出的解决方案 如何使用twitter的bootstrap 2 1 0中新的affix插
  • iOS 静态与动态框架说明

    我不得不承认 随着 iOS 8 的发布 我对 iOS 中的动态框架和静态框架有点困惑 我正在寻找一种方法来分发我创建的库 并且我需要支持 iOS 7 及更高版本 注意 这将是一个专有框架 我不能使用 cocoa pods 也不能分发源代码
  • 禁用 ng-packagr 中的 TypeScript 不匹配

    在 Angular CLI 项目中 当使用不受支持的 TypeScript 版本时 您可能会收到以下警告 angular email protected cdn cgi l email protection requires typescr
  • 自定义存储库的 Spring Data Solr 优先级

    我需要在 Spring Data Solr 自定义存储库中实现以下内容 X 或 Y 和 Z 我当前的代码如下 Criteria criteria new Criteria x is X VALUE criteria criteria or
  • 按月/年间隔汇总每日数据

    我并不经常需要在 R 中处理日期 但我认为这相当简单 我有一列代表数据框中的日期 我只想创建一个新的数据框 使用日期按月 年总结第二列 最好的方法是什么 我想要第二个数据框 这样我就可以将它提供给绘图 您能提供的任何帮助将不胜感激 编辑 供
  • VSTS 使用 API 在队列时设置构建参数

    我需要对来自 REST API 的 VSTS 构建进行排队 记录于https learn microsoft com en us rest api vsts build builds queue view vsts rest 4 1 htt
  • 在程序关闭期间捕获Python中的键盘中断

    我正在用 Python 编写一个命令行实用程序 因为它是生产代码 所以应该能够干净地关闭 而不会将一堆内容 错误代码 堆栈跟踪等 转储到屏幕上 这意味着我需要捕获键盘中断 我尝试过使用 try catch 块 例如 if name main
  • sbt:编译测试时设置特定的 scalacOptions 选项

    通常我使用这组选项来编译 Scala 代码 scalacOptions Seq deprecation encoding UTF 8 feature unchecked language higherKinds language impli
  • FindBugs 排除过滤器的问题

    我正在评估 FindBugs 并尝试使用 exceptFilter 以便该工具不会处理测试包或生成的 ejb 存根 我已经尝试过以下方法
  • 如何使用 scipy.integrate 获取截断球体的体积?

    我正在努力使用 scipy integrate 我使用了 tplquad 但是我该如何使用integrate获得 截断 球体的体积 谢谢 import scipy from scipy integrate import quad dblqu
  • 将自己编写的 TypeScript 模块导入 Svelte 组件时出现错误

    我正在尝试将自己编写的 TypeScript 模块导入到 Svelte 组件中 但是 当我尝试使用以下行导入模块时 我收到以下错误 import TelegramBotForSafetyMania from telegram bot 我们收
  • 带有 CosmosDBTrigger 的 Azure 函数似乎不是由 upsert 触发的

    我是第一次使用 Azure Functions 我正在尝试编写一个简单的函数来响应更改或添加到 CosmosDb 集合中的文档 我写的函数如下所示 FunctionName ChangeLog public static void Run
  • MPI_Type_Create_Hindexed_Block 生成派生数据类型的错误范围

    使用Fortran 我尝试为动态分配的结构构建派生数据类型 但它得到了新类型的错误范围 代码如下 PROGRAM MAIN IMPLICIT NONE INCLUDE mpif h INTEGER I INTEGER MYID NUMPRO
  • 我可以让 lein cloverage 跳过特定测试吗?

    我正在进行一个 Leiningen 项目 其集成测试注释如下 deftest manual test v3 preview preview client http localhost 10313 v3 preview 当我这样做时 这些测试
  • Web.GetFileByServerRelativeUrl 抛出“值未落在预期范围内”

    我有一个存储文档的 SP Online 站点 添加 检索文档没有任何问题 但在删除流程中 我在检索文档时遇到错误File object public static void DeleteDocument using ClientContex
  • Oracle中表的列重新排序

    我有一个包含 50 多列的表 我需要交换前两列的顺序 使用 Oracle 实现此目的的最佳方法是什么 假设表名是 ORDERDETAILS 前两列是 ITEM ID 和 ORDER ID 重命名完成后 表名仍应为 ORDERDETAILS
  • ASP.NET 4.0 中的模拟 HttpRequest

    我见过很多类似的帖子 但没有一个能真正解决我的特殊情况 我正在 ASP NET 4 0 Web 应用程序 ASP NET Forms 而不是 MVC 中编写单元测试 代码中有几个地方我称之为ServerVariables调用变量的集合 例如