HtmlHelpersの結果を単体テストする方法はありますか?たとえば、カスタム入力用のHTMLマークアップを生成するヘルパーがあります(TagBuilderを内部で使用しています)。結果は文字列に変換してユニットテストで予想される文字列と比較する必要があるIHtmlStringです。しかし、これは非常に複雑になります。なぜなら、htmlでは属性の順序は気にしません。予想される文字列などをエスケープする必要があります。解決策:私はHtmlAglityPackを使用して単体テストを作成し始めました。コードは次のようになります。ASP.MVC:単体テストhtmlタグヘルパーの使用方法
var states = new[] { MultiStateInputState.Unknown, MultiStateInputState.Yes, MultiStateInputState.No };
var actual = Html.Abb().MultiStateInput(states).Name("myinput").ToHtmlString();
var doc = new HtmlDocument();
var actualTextInput = doc.DocumentNode.ChildNodes.First(n => n.Name == "input");
Assert.That(node, Is.Not.Null);
Assert.That(node.Attributes, Is.Not.Null);
Assert.That(node.Attributes, Is.Not.Empty);
var attribute = node.Attributes.Single(a => a.Name == "name");
Assert.That(attribute, Is.Not.Null);
Assert.That(attribute.Value, Is.EqualTo("myinput"));
これは2つの文字列を比較するよりはるかに優れています。属性の順序などを気にする必要はありません。
最終的には、htmlレイアウトを表す文字列を生成します。文字列の結果を比較することでテストできます。 –