如何对 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()){ }” 的相关文章

随机推荐