をAssertViewRendered。私は、次の基本的なテストを持っている:場合は私のASP.NET MVC 3プロジェクトで、私はT4MVCを使用しています
MvcContrib.TestHelper.ActionResultAssertionException: Expected view name '~/Views/Home/Index.cshtml', actual was ''
しかし、テストは合格:
public virtual ActionResult Index()
{
return View();
}
特定のエラーがある:コントローラメソッドは、デフォルトのビューを返した場合
[TestMethod]
public void IndexReturnsIndexView()
{
var controller = new HomeController();
var result = controller.Index();
result.AssertViewRendered().ForView(MVC.Home.Views.Index);
}
テストが失敗しました私は返すためにどのviewName
指定するView
をオーバーライドします。
public virtual ActionResult Index()
{
return View(MVC.Home.Views.Index);
}
result.AssertViewRendered().ForView(MVC.Home.Index().GetT4MVCResult().Action);
次のエラーが発生します:
は、私はまだない幸運を、次のアサーションを使用してみましたが、
MvcContrib.TestHelper.ActionResultAssertionException: Expected view name 'Index', actual was ''
私はその後、私はアサーションの失敗を読み違えていたことに気づいたので、私が変更これにテストしてください:
result.AssertViewRendered().ForView(String.Empty);
テストは合格ですが、テスト自体は役に立たないようです。
すべてのビューを名前で指定する必要はありません。これをどのようにテストすればよいですか?明確にするために、私は今日NuGetからインストールしたMvcContrib.Mvc3.TestHelper-ci 3.0.96.0を使用しています。
UPDATEは
これは、質問への答えではないですが、私はテストケースとして、より多くの価値を提供する代わりに、以下の始めている:私はこのオープンを残し
using (var controller = new FeatureController(mockGateway))
{
// Act
var result = controller.Index();
var model = result.ViewData.Model as MyModel;
// Assert
Assert.IsNotNull(model, "Model is null or wrong type");
result.AssertViewRendered().WithViewData<MyModel>();
// Alternative Assert for model data
Assert.IsTrue(model.Items.Count > 0);
}