내 컨트롤러가 작업 메서드 논리에 따라 다른보기를 반환 할 수 있습니다. 조치 메소드 '작성'은 서비스에 몇 가지 유효성 검증 및 지속성을 요청합니다. 유효성 검사가 실패하면 action 메소드는 동일한 'Create'뷰를 반환합니다. 유효성 검사 및 저장이 정상적으로 실행되면 작업 메서드는 '인덱스'뷰 (RedirectToAction)를 반환합니다.ASP.NET MVC - 작업 메서드 논리에 따라 다른보기를 반환하는 컨트롤러를 테스트하십시오.
return View("Create", data);
난 단지 때문에 시험의 뷰 이름을 하드 코딩 wan't하지 않지만 알아낼 수 없습니다 : 나는 다음과 같이 명시 적으로 뷰 이름을 제공하는 경우에만 뷰 이름을 얻는 것이 가능하다는 것을 알고있다 반환 된 뷰를 찾는 방법. 액션 메소드 로직에 따라 리턴 된 뷰를 테스트 할 수있는 깔끔하고 우아한 방법이 있습니까?
BTW, 여기 내 테스트 코드 ..
[TestMethod]
public void Create_Post_Should_Return_Create_View_When_Saving_Invalid_Court() {
var courtServiceMock = new Mock<ICourtService>();
var userServiceMock = new Mock<IUserService>();
courtServiceMock.Setup(x => x.Add(It.IsAny<CourtInfo>())).Returns((int?)null);
userServiceMock.Setup(x => x.Get(It.IsAny<string>(), It.IsAny<UserLoadOptions>())).Returns(new UserInfo { Id = 1 });
var controller = new CourtsController(courtServiceMock.Object, userServiceMock.Object);
var controllerContextMock = new Mock<ControllerContext>();
controllerContextMock.SetupGet(x => x.HttpContext.User.Identity.Name).Returns("admin");
controller.ControllerContext = controllerContextMock.Object;
var view = controller.Create(new CourtInfo()) as ViewResult;
Assert.IsTrue(view.ViewName == "Create"); //this line is not working
}