Meilleur moyen de test unitaire ASP.NET MVC méthodes d'action qui utilisent BindingHelperExtensions.UpdateFrom?

StackOverflow https://stackoverflow.com/questions/28723

  •  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)
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top