如何对调用html.EditorFor的扩展方法进行单元测试

3

在一次高峰期间,我为我的视图创建了一个漂亮的HTML助手扩展方法,它运行良好。它将使我的视图更容易维护。

现在我需要想办法对它进行单元测试。以下是我尝试做的要点:

public static MvcHtmlString EditorOrDisplayForBasedOnConvolutedBusinessLogic<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
    if (ConvolutedBusinessLogic())
    {
        return html.EditorFor(expression);
    }
    else
    {
        return html.DisplayFor(expression);
    }
}

EditorFor和DisplayFor本身就是扩展方法。在我的单元测试中,如何断言基于ConvolutedBusinessLogic的输入,适当地调用了EditorFor或DisplayFor?如果失败,我该如何设置正确的存根/伪装/模拟,以便对EditorFor或DisplayFor的调用不会引发NullReferenceException,并且我可以断言返回的内容是正确的?

1个回答

3

1
截至2015年9月27日,更新后的链接可能是http://offroadcoder.com/unit-testing-asp-net-html-helpers-with-simple-fakes/。 - Manfred
这些伪造物对我也起作用了。我花了好几个小时才找到适合的模拟/伪造对象。天哪,单元测试MVC真是烦死了。最终,我可以对HtmlHelper.EditorFor()扩展方法进行单元测试,而不会抛出一些毫无帮助的异常(如NullReferenceExceptions)! - QuantumHive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接