мой контроллер может возвращать различные представления в зависимости от логики метода действия. Метод действия «Создать» просит службу выполнить некоторую проверку и сохранение. Если проверка не пройдена, метод действия возвращает то же представление «Создать». Если проверка и сохранение выполняются успешно, метод действия возвращает представление «Индекс» (RedirectToAction).
Я знаю, что получение имени представления возможно только в том случае, если вы явно указали имя представления следующим образом:
return View("Create", data);
Я не хочу жестко кодировать имя представления только из-за тестов, но не могу понять, как найти, какое представление было возвращено. Есть ли чистый и элегантный способ проверить, какое представление было возвращено в зависимости от логики метода действия?
Кстати, вот мой тестовый код ..
[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
}