mvccontrib 测试助手并验证 http post 路由和参数

2023-11-23

在我的 Asp.net MVC 应用程序中,我在控制器上有两种方法,一种用于用户第一次到达视图时,另一种用于用户在所述视图上提交表单时。

public ActionResult Foo() {}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Foo(string id, Account accountToFoo) {}

在第二个操作中,有一个自定义模型绑定器正在组装我正在操作的帐户对象,尽管这实际上并不重要。这在服务器本地测试中一切正常。

我们尝试很好地编写单元测试来测试所有不同的视图是否正确路由到,包括 HTTP POST 的视图。为此,我们一直在使用 mvccontrib 的测试助手。

测试变得非常简单

"~/account/foo/myusername".
       Route().
       ShouldMapTo<AccountController>(c => c.Foo("myusername"));

我的问题是在测试 POST 路由时,如何编写 lambda 来验证帖子是否接收到准确的值,类似于上面的 GET 测试?

对于 POST,它看起来像:

"~/account/foo".
         WithMethod(HttpVerbs.Post).
         ShouldMapTo<AccountController>(a => something_something);

这是我的 lambda 的 some_something 部分,我遇到了麻烦。使用任意值不起作用(“a => a.Foo(0, new Account()”)。我如何指定预期值作为测试的一部分?

EDIT我希望有类似于 Moq 对 foo.Setup(s => s.Foo(It.IsAny(), It.Is(i => i > 32)) 等语句的 lambda 表达式的方式。即使我必须显式地提供这些值,这也是可行的——我似乎无法理解所需的结构来传递这些显式值。


这是一个例子。假设您有以下操作:

public AccountController : Controller
{
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Foo(string id) 
    {
        return View();
    }
}

并注册了以下路由:

RouteTable.Routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "home", action = "index", id = "" }
);

你可以这样测试:

var routeData = "~/account/foo".WithMethod(HttpVerbs.Post);
routeData.Values["id"] = "123";
routeData.ShouldMapTo<AccountController>(c => c.Foo("123"));

可能需要进行一些调整才能包括第二个Account你有论据。

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

mvccontrib 测试助手并验证 http post 路由和参数 的相关文章

  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • MVC 5 中的“缓存配置文件”

    我是 MVC 的初学者 我有一个项目要从 MVC2 转换到最新版本的 MVC 我读了一些关于MVC 4的书 所以我开始了解主要机制 但是 在转换我的 MVC 2 解决方案时 我遇到了一个属性问题 OutputCache 例如 我有多个这样的
  • ASP.NET MVC 母版页数据

    我使用 ASP NET MVC 越多 我就越喜欢它 然而 在母版页上显示模型数据的情况下 似乎有多种方法可以实现 我不确定最佳解决方案 我的示例是一个商业网站 我想在每个页面上输出产品类别列表 并显示访问者购物车的状态 在 ASP NET
  • 如何在 asp.net C# 4.0 中调用异步方法?

    我知道 net 4 5 中有await async 关键字 可以轻松调用异步方法 我目前正在研究如何在 C 4 0 中进行异步调用 我想要的一个例子是在数据网格正在进行数据绑定的情况下进行异步调用 如果您能为我提供一些链接 我将非常感激 看
  • ASP.NET MVC 框架是否支持异步页面执行?

    我正在学习 ASP NET MVC 框架 来自一些文章 例如this http weblogs asp net stephenwalther archive 2008 03 17 asp net mvc in depth the life
  • $http post 未与 asp.net MVC 模型绑定

    为什么 angularjs http post 的有效负载没有绑定到输入模型 当调用该操作时 模型为空 并且 request params 和 request forms 不显示发送表单的任何迹象 但 fiddler 请求显示负载是通过 J
  • 重置 IIS 中的静态变量

    我已在 ASP NET MVC 应用程序的应用程序启动事件中为静态变量分配了值 protected void Application Start public static list
  • ASP.NET MVC区域命名空间问题

    我在我的 asp net mvc 3 解决方案中创建一个名为的新区域admin Visual Studio 自动分配名称空间 MyApp areas admin controllers 我将其更改为MyApp admin controlle
  • 如何在asp.net中异步执行两个作业

    网 我需要你的帮助请帮助我 请参阅我的代码 如果我的第一份工作完成 则退出btn ok代码隐藏并更新到 ASP NET 屏幕 但同时作业 2 必须工作 正在处理批量电子邮件 protected void btn ok object send
  • 为什么 httpRuntime targetFramework="4.5" 禁止抓取 .ASPXAUTH cookie?

    当我的 web config 具有以下 httpRuntime 时 我的控制器无法获取 cookie ASPXAUTH 它似乎能够获取任何其他 cookie 无论带或不带句点前缀 如果我删除下面的行 它就可以正常工作
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • DSN 到连接字符串?

    我们有一个 ASP NET 网站 该网站使用一个数据库 我们希望能够使用连接字符串来访问该数据库 我们已经成功设置了一个 DSN 来连接到这个数据库 但我似乎无法发现连接字符串的正确魔力 是否有一种直接的方法可以将 DSN 中的值转换为连接
  • 在哪里存储 asp.net mvc 项目的图像以及如何从 site.master 引用它们

    我有一个新的 asp net mvc 项目 我正在尝试找出存储图像的最佳位置 以及如何从 site master 引用它们 如果我有一个标题图像 我想显示在所有页 建议或最佳实践 我通常做的是在我的内容文件夹中创建一个 图像 文件夹 只要保
  • 执行多个查询时如何保持连接打开?

    我正在使用多个查询从应用程序中的同一服务器提取数据 问题是每次有新查询时我都必须打开一个新连接 是否有可能 打开连接 运行查询 拉取结果 运行另一个查询 拉取另一个结果 运行最终查询 拉取另一个结果 关闭连接 尽管您可能还不知道 但您的做法
  • 当按下 html 键盘按钮时,将文本添加到输入字段(具有焦点的字段)

    我使用 HTML 创建了一个屏幕键盘 div and a 标签 页面上有六个文本输入 名字 昵称 姓氏 注释 过敏 手机号码 我不太擅长 JS 但如果页面上只有一个输入 我确实知道该怎么做 但我不确定当有多个输入时该怎么做 我遇到的问题之一
  • 在 .NET C# 项目中使用 PHP

    有谁知道是否可以 以及是否有任何复杂性 在 NET C 项目中使用 PHP 语言 我知道 VB 和 C 现在可以混合在解决方案中 所以我想知道 由于 IIS 现在能够运行 PHP 您是否可以将它们组合成一个单一的运行时 显然 提出这个问题的
  • 在派生自 Control 的 ASP.NET 自定义控件中呈现自关闭标记

    我正在开发 Facebook FBML 控件库 并希望创建类似于 ASP NET WebControls 库的 FBML 控件 我有一个默认处理渲染的基类 这是我的渲染方法 protected override void Render Ht
  • 类型定义存在于两个库中

    我正在使用 NET 4 5 构建 ASP NET Web 窗体网站 错误 The type System ComponentModel DataAnnotations Schema ForeignKeyAttribute exists in
  • 如何正确编码 mailto 链接?

    我正在生成一些 HTML 并且我想生成 XSS 和数据库内容安全的mailto关联 这里使用的正确编码是什么 这个怎么样 myLiteral Text string Format mailto 0 Content Type text htm
  • 如何在 ASP.NET MVC 中获取参数数组作为 GET / POST?

    如何最好地获取数组 item gt value 对作为 GET POST 参数 在 PHP 中 我可以这样做 网址 这得到的参数为 Array a gt Array one gt 100 two gt 200 有什么方法可以在 ASP NE

随机推荐

  • 相当于 Python 文件的移动百分比

    对于带有以下语言的语言 为了表示块 vim 拥有全能的 钥匙 python代码的等效运动是什么 或者至少以相同的缩进移动到下一行 上一行 The vim wiki建议绑定 例如 nnoremap
  • 如何将 javafx 8 滚动窗格的内容居中

    我有一个 ScrollPane 其中包含一个 GridPane 其中包含一个 ImageView 其中包含一个 Image 我想要的是图像在 GridPane 中居中 如果没有 ScrollPane 我可以使用 setAlignment P
  • 按多个条件子集

    也许这是基本的东西 但我找不到答案 我有 Id Year V1 1 2009 33 1 2010 67 1 2011 38 2 2009 45 3 2009 65 3 2010 74 4 2009 47 4 2010 51 4 2011 1
  • STAThread 和多线程

    来自 MSDN 关于 STAThread 的文章 指示应用程序的 COM 线程模型是单线程单元 STA 作为参考 那就是整篇文章 单线程公寓 好吧 这超出了我的理解范围 另外 我在某处读到 除非您的应用程序使用 COM 互操作 否则该属性实
  • 如何向 WCF 客户端公开枚举属性

    我想向 WCF 客户端应用程序公开枚举属性 但我只能看到枚举值 这是枚举 public enum TemplateType EnumDescription Property Particulars EnumValue PropertyPar
  • 如何使 SET XACT_ABORT ON 回滚事务?

    基于书籍 在线文档SET XACT ABORT ON 我的印象是 如果 T SQL 语句引发运行时错误 则整个事务将终止并回滚 Remarks 当 SET XACT ABORT 为 ON 时 如果 Transact SQL 语句引发运行时错
  • LINQ 在查询中插入 'ESCAPE N'~'

    当我检查 Linq 发出的 SQL 查询时 我注意到它在执行 LIKE 命令时放置了一个 ESCAPE N 我该如何摆脱这个 看起来查询花费的时间是 SQL 中转义符的两倍 这是 LINQ var SearchPhrase xyz var
  • 如何使用 perl cd 进入目录?

    我正在尝试以下 系统 cd目录文件夹 但它失败了 我也尝试系统 退出 离开终端 但它失败了 Code chdir path to dir or die Perldoc chdir EXPR chdir FILEHANDLE chdir DI
  • 用于解析 SQL 参数的正则表达式

    如果我有一个查询 例如SELECT from authors where name name param 是否有正则表达式来解析参数名称 特别是 name param Thanks 这很棘手 因为参数也可能出现在带引号的字符串内 SELEC
  • 重新启动程序未提升

    由于某种原因 我的 C 程序需要以提升的权限重新启动 我使用以下代码来实现它 private static void RestartForPermissionsFix ProcessStartInfo processInfo new Pro
  • 如何加密密码列

    我在 SQL Server 2008 r2 中有用户表 目前还没有加密任何内容 但我想至少对密码进行加密 直到应用程序准备就绪 可以更好地处理这个问题 我可以这样做吗 如何做 手动对密码进行加密 您可以使用 SQL Server 加密列 请
  • 更改部署目标后无法再将应用程序模块导入到单元测试中

    为了在我的快速单元测试中对我的主应用程序目标的公共类进行单元测试 我必须在我的测试中导入我的主应用程序模块 如下所示 import MyAppModuleName 在我将部署目标从 7 0 更改为 8 4 之前 这一切都很好 现在构建和运行
  • 取出特定命名空间的所有类

    有没有办法从特定名称空间获取对象 也许与System Reflections 我想从类型中获取所有对象ITestType在命名空间中Test TestTypes作为对象 以便我有一个实例列表TestType1 TestType2 TestT
  • iOS 获取键盘窗口

    所以在 iOS 7 中我总是得到这样的键盘窗口 UIView keyboardView UIWindow tempWindow Because we cant get access to the UIKeyboard throught th
  • Steam Web API 获取 CS:GO 库存

    好吧 所以我一直在互联网上寻找这个 我发现当你想获得某人的蒸汽库存时 你可以使用这个 http api steampowered com IEconItems appid GetPlayerItems v0001 key apikey st
  • 使用 Intellij 13.1.3 的 Android 渲染问题

    在 IntelliJ 13 1 3 中查看 Android 应用程序中 唯一 活动的预览时 出现以下错误 渲染问题 此版本的渲染库比您的 IntelliJ IDEA 版本更新 请更新 IntelliJ IDEA 对我哪里出错有什么想法吗 这
  • 外部触发 Raphael 事件

    我的应用程序使用 Rapha l 将一组对象拖放到页面上 每个对象都有一个click处理程序绑定 使用通过 JSON 加载时附加到对象的数据 一切正常 我现在尝试使用 Cucumber 添加一些测试覆盖率 是的 我知道我应该首先构建测试 我
  • 避免在 Android 中方向改变时使用 asynctask 重新加载 Activity

    在android中 当用户改变方向时 如何避免在活动中使用asynctask类重新加载活动 有人可以举个例子吗 请关闭配置更改作为最后的手段 你的应用程序must发生这种情况时可以正常工作 如果您关闭方向配置更改 因为它会中断 您的应用程序
  • Angular 2 路由器 - 命名出口

    文档不是很好 但我试图在同一页面 路由上有不同的路由器出口 我的 app component html 中有这个
  • mvccontrib 测试助手并验证 http post 路由和参数

    在我的 Asp net MVC 应用程序中 我在控制器上有两种方法 一种用于用户第一次到达视图时 另一种用于用户在所述视图上提交表单时 public ActionResult Foo AcceptVerbs HttpVerbs Post p