Как выполнить модульное тестирование HtmlHelper, похожее на «using (Html.BeginForm ()) {}» - PullRequest
4 голосов
/ 21 марта 2010

Может кто-нибудь подсказать, как можно написать модульный тест с 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>

1 Ответ

0 голосов
/ 11 ноября 2014

Я думаю, что эти 3 ссылки помогут

  1. Подготовка Html Helper https://stackoverflow.com/a/747186/980003
  2. Создать метод теста https://stackoverflow.com/a/3424771/980003 (но использовать HtmlHelper из первой ссылки)
  3. Подтвердите результат с вашими ожиданиями, как обычно.

Вот пример одноразового помощника. Как это выглядит внутри. https://stackoverflow.com/a/8292524/980003

...