3

TagBuildersを介して HTML を生成するコードがあります。適切な HTML が生成されているかどうかをテストするにはどうすればよいですか? 私の TagBuilder は 1 つのタグだけという単純なものではなく、他のタグも含まれています。だから私は次のHTMLでTagBuilderオブジェクトを返す関数を持っています

<div> 
   <input type="checkbox" name=".." /> <label for=".." />
   <input type="checkbox" name=".." /> <label for=".." />
   <input type="checkbox" name=".." /> <label for=".." />
<div/>

したがって、最初のチェックボックスがあるかどうかをテストするには、次のようにします。

Assert.True(MyTag.InnerHtml.Contains("<input type="checkbox" name=".." />");  

これは間違っているようです。これを行う別の方法はありますか?

4

1 に答える 1

3

できることは、HtmlAgilityPackを使用してタグを生成し、HtmlDocumentクエリを実行して要素の数などを取得することです。

HtmlDocument document = new HtmlDocument();
document.LoadHtml(MyTag.ToString());

var checkBoxCount = document.DocumentNode.DescendantNodes()
                    .Where(item => item.Name == "input" && item.GetAttributeValue("name", string.Empty) == "..")
                    .Count();

Assert.True(checkBoxCount == 3); 

ドキュメントと述語関数を受け取り、アイテムの数を返すメソッドを用意することで、呼び出しをクリーンアップできます。

このアプローチでは、メソッドの出力である Html が有効であることを確認する必要があります。そうしないと、HtmlAgilityPack が修正を試みるため、奇妙なテストの問題が発生します。

于 2011-08-18T21:23:27.133 に答える