Voici une partie d'une action de contrôleur:modèle n'est pas validé automatiquement lors de tests unitaires
[HttpPost]
public ActionResult NewComplaint(Complaint complaint)
{
if(!ModelState.IsValid)
{
// some code
}
// some more code...
}
Lors de l'exécution de l'application, le modèle est validé automatiquement avant l'instruction if est même appelé. Toutefois, lors de la tentative de test unitaire de ce code, la validation automatique ne se produit pas.
Si je devais utiliser un FormCollection et appeler TryUpdateModel à la place, la validation se produirait mais je ne veux pas l'utiliser.
J'ai trouvé qu'appeler TryValidateModel (modèle) avant l'instruction if fonctionne bien sur le problème; ne nécessitant qu'une seule ligne de code supplémentaire. Je préférerais m'en débarrasser cependant.
Des idées pour lesquelles la validation automatique ne se produit pas lors des tests unitaires, mais se produit lorsque l'application est en cours d'exécution?
EDIT: Vous avez oublié de mentionner, j'utilise ASP.NET MVC3 RC1 et je suis moqueur l'objet HttpContext du contrôleur si cela fait une différence
homme, maintenant je me sens stupide. Devrait juste fait cela ou se moquer de cela. Tout au long de mes tests, je crée un object/formCollection avec toutes les propriétés/entrées nécessaires pour faire passer la validation au lieu de simplement définir ModelState via des mock. – xTRUMANx
marcind, j'obtiens ce test que le cadre est hors de portée pour la plupart des tests unitaires. Cependant, les tests doivent indiquer si les annotations de données correctes ont été spécifiées. – wilk