【问题标题】:How to Unit Test HtmlHelper similar to "using(Html.BeginForm()){ }"如何对类似于“using(Html.BeginForm()){ }”的 HtmlHelper 进行单元测试
【发布时间】:2011-01-29 22:20:47
【问题描述】:

有人可以建议我如何使用 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>

【问题讨论】:

    标签: asp.net-mvc unit-testing nunit moq html-helper


    【解决方案1】:

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

    1. 准备 Html 帮助程序https://stackoverflow.com/a/747186/980003
    2. 创建测试方法https://stackoverflow.com/a/3424771/980003(但使用第一个链接中的 HtmlHelper)
    3. 正常断言结果符合您的预期。

    这里是一次性助手的示例。里面的样子。 https://stackoverflow.com/a/8292524/980003

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2011-12-19
      • 2014-10-08
      相关资源
      最近更新 更多