Model view controller 单元测试中调用HtmlHelper的NullReferenceException

Model view controller 单元测试中调用HtmlHelper的NullReferenceException,model-view-controller,html-helper,Model View Controller,Html Helper,我编写了一个HtmlHelper,它依次调用Html.TextBoxFor()。然而,当我执行测试时,我得到一个null ref异常。我假设我创建的HtmlHelper不正确,但我不知道是什么错了 我已尽可能简化了代码: public static HtmlHelper CreateHtmlHelper(ViewDataDictionary viewData = null, TModel model = null) where TModel : class, new() { if (v

我编写了一个HtmlHelper,它依次调用Html.TextBoxFor()。然而,当我执行测试时,我得到一个null ref异常。我假设我创建的HtmlHelper不正确,但我不知道是什么错了

我已尽可能简化了代码:


public static HtmlHelper CreateHtmlHelper(ViewDataDictionary viewData = null, TModel model = null) where TModel : class, new()
{
    if (viewData == null)
        viewData = new ViewDataDictionary(model ?? new TModel());

    Mock mockViewContext = new Mock(
                                            new ControllerContext(
                                                new Mock().Object,
                                                new RouteData(),
                                                new Mock().Object),
                                            new Mock().Object,
                                            viewData,
                                            new TempDataDictionary(),
                                            new StringWriter());

    var mockViewDataContainer = new Mock();

    mockViewDataContainer
        .Setup(v => v.ViewData)
        .Returns(viewData);

    return new HtmlHelper(mockViewContext.Object, mockViewDataContainer.Object);
}

[TestMethod]
public void ReadOnlyTextBox_Returns_ReadOnly_Textbox()
{
    var cl = new Class1();
    var helper = CreateHtmlHelper(model: cl);
    MvcHtmlString result = helper.ReadOnlyTextBox(m => m.First);

    Assert.IsNotNull(result);
}

public static MvcHtmlString ReadOnlyTextBox(this HtmlHelper helper, Expression> expr)
{
    // Do some stuff
    return helper.TextBoxFor(expr, new { @readonly = "readonly", @disabled = "disabled" });
}
正在helper.TextBoxFor()上调用异常。有人看到任何看起来不对劲的东西吗? 我从中获取了CreateHtmlHelper方法