Я создал несколько помощников тегов в AspNetCore, которые принимают генератор IHtmlGenerator в качестве конструктора.Я хочу создать модульные тесты для них, но я не знаю, что передать конструкторам.Я вижу, что реализация получает DefaultHtmlGenerator в конструкторе, но это, в свою очередь, также принимает многочисленные элементы в конструкторе, поэтому я немного растерялся, как это сделать.
public class FormLabelTagHelper : TagHelper
{
public FormLabelTagHelper(IHtmlGenerator generator)
{
this.Generator = generator;
}
[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }
public IHtmlGenerator Generator { get; }
[ViewContext]
[HtmlAttributeNotBound]
public ViewContext ViewContext { get; set; }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
TagHelperOutput labelElement = await this.CreateLabelElement(context);
labelElement.AddClass("control-label", HtmlEncoder.Default);
output.TagName = null;
output.Content.AppendHtml(labelElement);
output.TagMode = TagMode.StartTagAndEndTag;
}
protected async Task<TagHelperOutput> CreateLabelElement(TagHelperContext context)
{
LabelTagHelper labelTagHelper = new LabelTagHelper(this.Generator)
{
For = this.For,
ViewContext = this.ViewContext
};
TagHelperOutput labelOutput = this.CreateTagHelperOutput("label");
await labelTagHelper.ProcessAsync(context, labelOutput);
return labelOutput;
}
protected TagHelperOutput CreateTagHelperOutput(string tagName)
{
return new TagHelperOutput(
tagName: tagName,
attributes: new TagHelperAttributeList(),
getChildContentAsync: (s, t) =>
{
return Task.Factory.StartNew<TagHelperContent>(() => new DefaultTagHelperContent());
});
}
}