How to Unit Test HtmlHelper similar to “using(Html.BeginForm()){ }”

泄露秘密 提交于 2019-12-12 09:43:39

问题


Can somebody please suggest how I could write a Unit Test with Moq for following HtmlHelper method?

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);
}

which you would use as follows (please note the using statement - this is causing me confusion):

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

using this method, if you specify T as type DivTag, where ShareClass is defined as

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;
    }
}

the following html will be rendered:

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

回答1:


I think this 3 links will help

  1. Prepare Html Helper https://stackoverflow.com/a/747186/980003
  2. Create test method https://stackoverflow.com/a/3424771/980003 (but use HtmlHelper from first link)
  3. Assert result with you expectations as normal.

Here is example of disposable helper. How it looks like inside. https://stackoverflow.com/a/8292524/980003



来源:https://stackoverflow.com/questions/2485341/how-to-unit-test-htmlhelper-similar-to-usinghtml-beginform

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!