如何对 HtmlHelper 进行单元测试,类似于“using(Html.BeginForm()){ }”

2024-02-18

有人可以建议我如何使用 Moq 为以下 HtmlHelper 方法编写单元测试吗?

public static HtmlTagBase GenerateTag<T>(this HtmlHelper htmlHelper
                                   , object elementData
                                   , object attributes) 
    where T : HtmlTagBase
{
    return (T)Activator.CreateInstance(typeof(T)
                                       , htmlHelper.ViewContext
                                       , elementData
                                       , attributes);
}

您将按如下方式使用(请注意using声明 - 这让我感到困惑):

<%--Model is a type of ShareClass--%>
<% using (Html.GenerateTag<DivTag>(Model)) { %>
    My Div       
<% } %>

使用此方法,如果您指定T作为类型DivTag,其中 ShareClass 定义为

public class ShareClass
{
    public string Name { get; set; }
    public string Type { get; set; }
    public IEnumerable<Fund> Funds { get; set; }

    public ShareClass(string name, string shareClassType)
    {
        this.Name = name;
        this.Type = shareClassType;
    }
}

将呈现以下 html:

<div class="ShareClass" shareclass-type="ShareClass_A" shareclass-name="MyShareClass">My Div</div>

我认为这 3 个链接会有帮助

  1. 准备 Html 助手https://stackoverflow.com/a/747186/980003 https://stackoverflow.com/a/747186/980003
  2. 创建测试方法https://stackoverflow.com/a/3424771/980003 https://stackoverflow.com/a/3424771/980003(但使用第一个链接中的 HtmlHelper)
  3. 像往常一样按照您的期望断言结果。

这是一次性助手的示例。里面看起来怎么样。https://stackoverflow.com/a/8292524/980003 https://stackoverflow.com/a/8292524/980003

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

如何对 HtmlHelper 进行单元测试,类似于“using(Html.BeginForm()){ }” 的相关文章

  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 在 ASP.Net MVC 中的同一视图中分离两个表单

    我已将创建帐户视图和登录视图合并到同一视图中 所以这是一个具有两种表单的视图 但是当我提交时它们会混合在一起 如果我尝试登录并显示错误 Html ValidationSummary 两种形式都会出现错误 我开始将字段重命名为 loginPa
  • $http post 未与 asp.net MVC 模型绑定

    为什么 angularjs http post 的有效负载没有绑定到输入模型 当调用该操作时 模型为空 并且 request params 和 request forms 不显示发送表单的任何迹象 但 fiddler 请求显示负载是通过 J
  • Ajax.BeginForm 帮助程序未将部分视图加载到指定的 DIV 中

    我正在使用 MVC 尝试将表单提交的结果加载到特定的 DIV 中 下面是我的表单的代码 div class segmentForm clearfix div
  • 自定义角色提供程序不实现继承的抽象成员

    我需要一些帮助在 ASP NET MVC 应用程序中实现自定义角色提供程序 问题是我遇到了几个错误 例如 MyRoleProvider does not implement inherited abstract member System
  • “RouteCollection”不包含“MapMvcAttributeRoutes”的定义

    我尝试使用基于属性的路由 但是当我尝试以下代码片段来激活基于属性的路由时 我收到以下错误消息 RouteCollection 不包含定义 MapMvcAttributeRoutes 这是我的代码 public class RouteConf
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • asp.net mvc 我什么时候应该读取 servervariables?

    我什么时候可以从服务器变量收集信息 代码的一部分 我的意思是 我尝试过这样称呼 string temp Request ServerVariables Get HTTP REMOTE USER 在控制器构造函数中 但我收到一个空指针异常 而
  • 删除或替换 RouteTable 中的现有路由

    我得到了一个 ASP NET MVC 2 0 Preview 1 应用程序 并开始创建一些包含自己的路由的区域 我希望有一种方法可以在主项目中覆盖这些路线 我当然不能添加同名的新路线 我可以看到 RouteTable Routes Remo
  • 当 URL 包含 ASP.Net Core 参数的“+”时出现 404 错误

    当参数包含编码为空格的空格时 我的服务器返回 404 错误 代替 20 我不明白为什么 路线的形式为 Route Search PRM1 prm1 PRM2 prm2 PRM3 prm3 我的第一个问题是如何让服务器理解这种 URL htt
  • 如何在 ASP.NET MVC 中获取参数数组作为 GET / POST?

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

    我也是 Mockito 和 PowerMockito 的新手 我发现我无法使用纯 Mockito 测试静态方法 因此我需要使用 PowerMockito 对吗 我有一个非常简单的类 名为 Validate 使用这个非常简单的方法 publi
  • 未找到与 Web API 中的请求 URI 匹配的 HTTP 资源

    我已经像这样配置了我的 WebApiConfig public static void Register HttpConfiguration config config Routes MapHttpRoute name DefaultApi
  • 在 MVC 2 编辑器模板中正确注册 JavaScript 和 CSS

    如何在 ASP NET MVC 2 RTM 编辑器模板中正确注册 javascript 块 我所处的具体场景是我想使用Dynach JSCal2 日期时间选择器 http www dynarch com projects calendar
  • 如何在 ASP.NET MVC 5 中实现简单的身份验证

    我有一个带有 SQL Server 数据库的现有项目 带有数据库优先的 EF 工作单元和服务层 我需要添加 ASP NET MVC 项目并使用现有服务来验证用户身份 我发现了不同的复杂决定 我需要在身份中使用我的服务或在没有身份的情况下实现
  • 使用mockito对DAO层进行单元测试

    我正在尝试使用 Mockito 对我的 Spring Hibernate 项目进行单元测试 以下是我的 DAO 类的实现 Repository public class EmployeeDAOImpl implements Employee
  • 如何在asp.net C#中从http重定向到https并将其设为网站的默认版本

    如何在asp net c 中从http重定向到https 我已经安装了https证书现在我想将https设置为我的网站的默认版本 iam使用windows server 2008 R2 asp net C 4 0 您是否正在寻找这样的东西
  • 模拟 ngrx/store

    这是关于 Angular 2 官方版本的 我知道单元测试在 beta RC 和正式版本之间发生了巨大的变化 当 ngrx store 用作构造函数中的参数时 在单元测试中模拟 ngrx store 的好方法是什么 这并不像嘲笑服务那么简单
  • TestMethod:异步任务 TestSth() 不适用于 .NET 4.0

    我正在尝试使用 NET 4 0 BCL Async 和 MsTest 运行异步测试方法 看来这个设置不能处理 测试方法 异步Task测试Sth 由于测试用例资源管理器中缺少条目 将签名更改为异步后void 我可以运行测试用例 但结果错误 根
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0

随机推荐