Я использую T4MVC в моем проекте ASP.NET MVC 3. У меня есть следующий базовый тест:Как проверить представление по умолчанию при использовании T4MVC с MvcContrib.TestHelper AssertViewRendered
[TestMethod]
public void IndexReturnsIndexView()
{
var controller = new HomeController();
var result = controller.Index();
result.AssertViewRendered().ForView(MVC.Home.Views.Index);
}
тест завершается неудачей, если метод контроллера возвращает вид по умолчанию:
public virtual ActionResult Index()
{
return View();
}
Ошибка Предоставленная:
MvcContrib.TestHelper.ActionResultAssertionException: Expected view name '~/Views/Home/Index.cshtml', actual was ''
Но тест проходит, если I переопределить View
, чтобы указать, какие viewName
для возврата:
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 ''
Я тогда понял, что я неправильно интерпретировал провал утверждение, поэтому я изменил test:
result.AssertViewRendered().ForView(String.Empty);
Тест проходит, но сам тест кажется бесполезным.
Желательно, чтобы я не хотел указывать все виды по имени, так как я могу проверить это? Чтобы уточнить, я использую MvcContrib.Mvc3.TestHelper-ci 3.0.96.0, который я установил сегодня из NuGet.
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);
}