単体テストでは、ビュー名なしで View() を使用してコントローラー アクションから戻ると、ViewResult.ViewName が string.Empty に設定されていることがわかりました。これを設定するには、View() 呼び出しのパラメーターとして指定する必要があります。たとえば、次の単体テストがあるとします。
[TextFixture]
public class MyControllerTests
{
[Test]
public void TestMyAction()
{
var controller = new MyController();
var result = controller.MyAction();
Assert.AreEqual("MyAction", result.ViewName);
}
}
次のアクションの実装により、単体テストが失敗します。
public class MyController : Controller
{
public ActionResult MyAction()
{
return View();
}
}
これは通過しますが:
public class MyController : Controller
{
public ActionResult MyAction()
{
return View("MyAction");
}
}
.NET 4.0 で ASP.NET MVC 2 (プレベータ版) を使用しています。ただし、.NET 4.0 固有のものは使用していません。ViewName は単体テストのアサーションでチェックできる信頼できるプロパティの 1 つだと思っていたので、この動作は奇妙に感じます。