ASP.NET MVC 3 프로젝트에서 T4MVC를 사용하고 있습니다. 나는 다음과 같은 기본 검사를 :MvcContrib.TestHelper와 함께 T4MVC를 사용할 때 기본 뷰를 테스트하는 방법 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 ''
을하지만 테스트하면 통과 어떤 viewName
을 반환할지 지정하려면 View
을 무시합니다.
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);
}