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

时间:2012-01-31 01:01:53

标签: asp.net-mvc-3 unit-testing tdd html-helper

在尖峰期间,我创建了一个漂亮的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 个答案:

答案 0 :(得分:3)

我的模拟背景不够完整。切换到使用基于http://offroadcoder.com/unit-testing-asp-net-html-helpers-with-simple-fakes/构建的假货,这一切都有效。

我仍然欢迎如何模仿而不是使用全套假货的答案。