4

SiteMapNode を単体テストする方法を知っている人はいますか? カスタム属性を持つサイト マップから順不同の html リストをレンダリングする、いくつかのカスタム ナビゲーション コントロールを構築しています。

テストファーストのアプローチに従おうとしていますが、SiteMapNode には HttpContext への内部依存関係があることがわかりました。サイト マップ ファイルをトラバースするには、仮想パスを使用してサイト マップ ファイルを見つけることを主張します。

テストしたいサイト マップを作成しましたが、Web プロジェクト (!) で単体テスト環境を作成したくありません。

助言がありますか?あざける?関連するメンバーをオーバーライドしますか?

4

2 に答える 2

2

かなり退屈な質問なので、回答が得られなかったのも当然です! この問題に出くわす可能性のある他の人にとって、これが私の推奨する解決策です。

これを処理する最善の方法は、物理サイト マップを xml ドキュメントに読み込むことです。次に、XML ドキュメントから独自の複合 NavigationNode ツリーを検証して構築する NavigationNodeFactory があります。

私の NavigationNode クラスは私が好きなように独断的であり、SiteMap と SiteMapProvider で見つけた問題、つまり実装者にとってのテスト容易性の低さを回避しています。

于 2008-11-20T10:14:28.457 に答える
0

問題は、あなたの説明から、既存のクラスである SiteMapNode を最初にテストしようとしていた可能性があると思います。

アプリケーション内でサイトマップ ノードの使用をテストする必要があるため、sitemapnode クラスでアクションを実行する場合は、これを中間の ISiteMapProvider または独自に作成した同様の抽象でラップし、カスタム ナビゲーションを使用することをお勧めします。コントロールはこれと相互作用します。

次に、操作のために SiteMapNode を呼び出すランタイム用の SiteMapNodeProvider と、テスト値をカスタム コントロールに渡す単体テスト用の StubbedSiteMapProvider を使用できます。

于 2008-11-20T10:45:48.503 に答える