Unité de test avec un contrôleur modèle de liaison personnalisé
-
18-09-2019 - |
Question
Dans ma demande, j'ai un liant modèle personnalisé que je mis à la DefaultBinder dans le global.asax:
ModelBinders.Binders.DefaultBinder = new XLDataAnnotationsModelBinder();
Lors de l'écriture des tests unitaires pour les contrôleurs que je dois vous assurer que le contrôleur utilise le liant modèle personnalisé, mais je ne sais pas comment faire.
Mon test ressemble à ceci:
[Test]
public void Details_Post_Action_Fails_To_Change_Email_Address_With_Duplicate()
{
// Setup
var controller = new AccountController();
controller.SetFakeControllerContext();
var param = Customer.Load(30005);
param.EmailAddress = "foo@bar.com";
// Test
var result = controller.Details(param);
// Assert
Assert.IsTrue(result is ViewResult); // will be ViewResult if failed....
Assert.IsFalse(((ViewResult)result).ViewData.ModelState.IsValid);
}
Avec ce test unitaire le contrôleur se termine à l'aide du DefaultModelBinder. Que puis-je ajouter dans ce test pour assurer le contrôleur utilise le liant modèle personnalisé?
La solution
Scott Hanselman a fait un blog lié à cela il y a un certain temps:
Comment tester une unité ModelBinder personnalisé à l'aide Moq?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow