mon contrôleur peut renvoyer différentes vues en fonction de la logique de la méthode d'action. La méthode d'action 'Create' demande au service d'effectuer une validation et une persistance. Si la validation échoue, la méthode d'action renvoie la même vue "Créer". Si la validation et la sauvegarde s'exécutent correctement, la méthode action renvoie la vue "Index" (RedirectToAction). Je sais que l'obtention du nom de vue est possible que lorsque vous fournissez explicitement le nom de vue comme suit:ASP.NET MVC - tester le contrôleur en retournant différentes vues en fonction de la logique de la méthode d'action
return View("Create", data);
Je ne wan't coder en dur le nom de vue seulement en raison de tests, mais ne peut pas comprendre comment trouver quelle vue a été retournée. Existe-t-il un moyen propre et élégant de tester quelle vue a été renvoyée en fonction de la logique de la méthode d'action?
BTW, voici mon code de test ..
[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
}