ASP.NET MVC 3プロジェクトでテンプレートヘルパーを使用しています。 1つの表示テンプレートに誤った余分なコードブロックがあり、そのビューが返されたときにコンパイラエラーが発生しました(「コードブロックに@ifを入れないでください」)。エラーでMVCビューテストを失敗できません
このビューを呼び出すテストメソッドがまだ成功していたことを除いて、すべて罰金がかかりました。私は単体テストでこのコードブロックがどのように失敗するかを調べるのに苦労しています。
はここで悪い表示テンプレートです:
[TestMethod]
public void DetailsReturnsView()
{
MemberJobController target = new MemberJobController(TestHarness.Context);
memberjob mj = TestHarness.UnitOfWork.MemberJobRepository.FirstOrDefault(x => true);
ActionResult result = target.Details(mj.idmemberjob); // <- this should hit the compiler error, I would have thought
Assert.IsNotNull(result);
}
しかし、そのテストが成功した:
@model MemberSelectorViewModel
@{
Layout = "~/Views/Shared/_DisplayFormItem.cshtml";
}
@section DataContent {
@{ // <- this was the typo, and it...
@if (Model.idMember.HasValue) // <- causes this to throw a compiler error
{
@Html.ActionLink(Model.FullName, "Details", "Member", new { id = Model.idMember.Value }, null)
@Html.HiddenFor(m=> m.idMember)
}
}
}
ここで私は失敗するべきだと思うのテストです。
テンプレートヘルパーの "@ {@if()"のタイプミスで失敗するテストをどのように書くか考えてみましょうか?
もちろん、ああ。明らかに私はMVCのブードゥーの一部をまだ手に入れていないので、テストビューをユニット化するためのプリコンパイルツールが必要です。 –
それは重要ではありませんが、私はこれを統合テストとは考えません。ビューをテストするためにコントローラをインスタンス化する必要があることは事実ですが、哲学的には理想的なコントローラです。テスト対象ではなく、テストフィクスチャの一部です。しかし、それはここにもそこにはありません... –