Meilleur moyen de test unitaire ASP.NET MVC méthodes d'action qui utilisent BindingHelperExtensions.UpdateFrom?
-
09-06-2019 - |
Question
Dans la manipulation d'un formulaire post j'ai quelque chose comme
public ActionResult Insert()
{
Order order = new Order();
BindingHelperExtensions.UpdateFrom(order, this.Request.Form);
this.orderService.Save(order);
return this.RedirectToAction("Details", new { id = order.ID });
}
Je ne suis pas en utilisant explicite des paramètres dans la méthode que je prévois d'avoir à s'adapter à nombre variable de champs, etc.et une méthode avec 20+ paramètres n'est pas attrayant.
Je suppose que ma seule option ici est de se moquer de l'ensemble de la HttpRequest, l'équivalent de ce que Rob Conery a fait.Est-ce une meilleure pratique?Difficile à dire avec un cadre qui est nouveau.
J'ai aussi vu des solutions impliquant l'aide d'un ActionFilter de sorte que vous pouvez transformer la méthode ci-dessus signature à quelque chose comme
[SomeFilter]
public Insert(Contact contact)
La solution
Je suis maintenant en utilisant ModelBinder de sorte que ma méthode d'action peut regarder (en gros) comme:
public ActionResult Insert(Contact contact)
{
if (this.ViewData.ModelState.IsValid)
{
this.contactService.SaveContact(contact);
return this.RedirectToAction("Details", new { id = contact.ID });
}
else
{
return this.RedirectToAction("Create");
}
}
Autres conseils
L'envelopper dans une interface et de s'en moquer.
L'utilisation de NameValueDeserializer http://www.codeplex.com/MVCContrib au lieu de UpdateFrom.