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_Code__Code

理想的には、何らかの方法でこれらの関数を呼び出して、結果/HTML を検証したいと考えています。URL を要求して HTML を検証できるフレームワーク (HtmlUnit 2.7 の C# バージョン) を用意しています。

カスタム ヘルパーをテストする方法はありますか? 次のようなものを書きたいと思います:

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 ヘルパーを単独で単体テストするのは簡単ではありません。

単体テスト可能でビューに依存しないヘルパー (使用している特定のビュー エンジンに依存しない) を使用するには、HtmlHelperまたはUrlHelperクラスの拡張メソッドとして提供される標準の HTML ヘルパーを使用する必要があります。例:

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 に答える