Il modo migliore per testare i metodi di azione ASP.NET MVC che utilizzano BindingHelperExtensions.UpdateFrom?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Nella gestione di un post del modulo ho qualcosa di simile

    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 });
    }

Non utilizzo parametri espliciti nel metodo poiché prevedo di dovermi adattare a un numero variabile di campi, ecc.e un metodo con più di 20 parametri non è allettante.

Suppongo che la mia unica opzione qui sia simulare l'intero HttpRequest, equivalente a ciò che ha fatto Rob Conery.È una pratica consigliata?Difficile dirlo con un quadro così nuovo.

Ho anche visto soluzioni che prevedono l'utilizzo di un ActionFilter in modo da poter trasformare la firma del metodo sopra in qualcosa di simile

[SomeFilter]
public Insert(Contact contact)
È stato utile?

Soluzione

Ora sto usando ModelBinder in modo che il mio metodo di azione possa assomigliare (sostanzialmente) a:

    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");
        }
    }

Altri suggerimenti

Avvolgilo in un'interfaccia e deridilo.

Utilizza NameValueDeserializer da http://www.codeplex.com/MVCContrib invece di UpdateFrom.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top