1

我根据此处此处的说明创建了一个自定义助手。这是它的外观片段(ThemeHelper.cs)

@inherits Helpers.HelperPage
@using System.Web.Mvc
@using System.Web.Mvc.Html
@...

@helper PathTo(string fileName) {
    @Url.Content("~/Content/Themes/" + Theme.CurrentTheme.FolderName + "/" + fileName);
}

按照说明,我已将其放在 App_Code 中。我可以在我的视图中使用这些助手,这就是我想要的。

现在我的问题是,我该如何测试这个东西?例如,我不能反射性地获取ThemeHelper类​​的实例,无论是在当前程序集中还是通过反射性访问App_Codeor__Code程序集(两者都没有实际返回)。

理想情况下,我想以某种方式调用这些函数并验证结果/HTML。我有一个框架(HtmlUnit 2.7 的 C# 版本),允许我请求 URL 并验证 HTML。

有没有办法测试我的自定义助手?我想写一些类似的东西:

ThemeHelper h = new ThemeHelper(); // or: Assembly.CreateInstance(...) or something
string html = h.PathTo("Site.css");
Assert.IsTrue(html.contains("Themes");
4

1 回答 1

0

现在我的问题是,我该如何测试这个东西?

单独对 Razor Page 助手进行单元测试并不容易。

为了具有单元可测试和视图不可知的帮助器(不依赖于您使用的特定视图引擎),您应该使用标准的 HTML 帮助器,作为HtmlHelperUrlHelper类的扩展方法。例子:

public static class UrlExtensions
{
    public static string ThemeHelper(this UrlHelper urlHelper, string fileName)
    {
        return urlHelper.Content("~/Content/Themes/" + Theme.CurrentTheme.FolderName + "/" + fileName);
    }
}
于 2011-11-22T16:46:43.670 回答