SiteMapNodeの単体テスト
-
08-07-2019 - |
質問
SiteMapNodeを単体テストする方法を知っている人はいますか?いくつかのカスタムナビゲーションコントロールを作成します。これは、カスタム属性を使用して、サイトマップから順序付けされていないHTMLリストをレンダリングします。
テストファーストアプローチを試みていますが、SiteMapNodeがHttpContextに内部依存関係を持っていることがわかりました。サイトマップファイルをトラバースするには、仮想マップを使用してサイトマップファイルを見つけることを要求します。
サイトマップを作成しました。これをテストしたいのですが、Webプロジェクトで単体テスト環境を作成したくありません(!)
提案はありますか? ock笑?関連するメンバーをオーバーライドしますか?
解決
やや退屈な質問なので、返事が得られなかったのは驚くことではありません!この問題に出くわすかもしれない他の人のために、ここに私の好ましい解決策があります:
これを処理する最良の方法は、物理サイトマップをxmlドキュメントに読み込むことです。次に、NavigationNodeFactoryがあります。これは、xmlドキュメントから独自の複合NavigationNodeツリーを検証および構築します。
NavigationNodeクラスは私が好きなように考えられており、SiteMapとSiteMapProviderで見つかった問題、つまり実装者のテスト性が低いことを回避します。
他のヒント
問題は、説明から、既存のクラスであるSiteMapNodeをテストファーストしようとしていた可能性があると思います。
アプリケーション内のサイトマップノードの使用をテストする必要があるため、sitemapnodeクラスでアクションを実行する場合は、中間のISiteMapProviderまたは同様のものでラップすることをお勧めします独自の作成の要約を作成し、カスタムナビゲーションコントロールにこれを作用させます。
次に、操作のためにSiteMapNodeを呼び出すランタイム用のSiteMapNodeProviderと、テスト値をカスタムコントロールに渡すユニットテスト用のStubbedSiteMapProviderを作成できます。