J'ai de la difficulté à trouver des informations sur ce que je pense être un scénario assez simple. J'essaie de tester une action sur mon contrôleur ASP.NET Mvc 2 qui utilise un modèle d'entrée personnalisé avec DataAnnotions. Mon framework de test est xUnit, comme mentionné dans le titre.Unité Test (xUnit) un contrôleur Mvc ASP.NET avec un modèle d'entrée personnalisé?
Voici mon habitude Modèle d'entrée:
public class EnterPasswordInputModel
{
[Required(ErrorMessage = "")]
public string Username { get; set; }
[Required(ErrorMessage = "Password is a required field.")]
public string Password { get; set; }
}
Et voici mon Controller (a sorti une certaine logique pour simplifier cette ex.):
[HttpPost]
public ActionResult EnterPassword(EnterPasswordInputModel enterPasswordInput)
{
if (!ModelState.IsValid)
return View();
// do some logic to validate input
// if valid - next View on successful validation
return View("NextViewName");
// else - add and display error on current view
return View();
}
Et voici mon xUnit Fait (également simplifié):
[Fact]
public void EnterPassword_WithValidInput_ReturnsNextView()
{
// Arrange
var controller = CreateLoginController(userService.Object);
// Act
var result = controller.EnterPassword(
new EnterPasswordInputModel
{
Username = username, Password = password
}) as ViewResult;
// Assert
Assert.Equal("NextViewName", result.ViewName);
}
Quand je lance mon test, je reçois l'erreur suivante sur mon fait de test en essayant de récupérer le résultat du contrôleur (section Loi):
System.NullReferenceException: Object reference not set to an instance of an object.
Merci d'avance pour toute aide que vous pouvez offrir!
Lorsque vous déboguez, ce qui est nul? ModelState? – Jab