Beste Möglichkeit zum Unit-Testen von ASP.NET MVC-Aktionsmethoden, die BindingHelperExtensions.UpdateFrom verwenden?

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

  •  09-06-2019
  •  | 
  •  

Frage

Bei der Bearbeitung eines Formularbeitrags habe ich so etwas wie

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

Ich verwende in der Methode keine expliziten Parameter, da ich davon ausgehe, dass ich mich an eine variable Anzahl von Feldern usw. anpassen muss.und eine Methode mit mehr als 20 Parametern ist nicht ansprechend.

Ich nehme an, dass meine einzige Möglichkeit hier darin besteht, den gesamten HttpRequest nachzubilden, was dem entspricht, was Rob Conery getan hat.Ist das eine Best Practice?Bei einem so neuen Framework ist das schwer zu sagen.

Ich habe auch Lösungen gesehen, die die Verwendung eines ActionFilters beinhalten, damit Sie die obige Methodensignatur in etwas wie „

[SomeFilter]
public Insert(Contact contact)
War es hilfreich?

Lösung

Ich benutze jetzt ModelBinder damit meine Aktionsmethode (im Grunde) so aussehen kann:

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

Andere Tipps

Wickeln Sie es in eine Schnittstelle ein und verspotten Sie es.

Verwenden Sie NameValueDeserializer von http://www.codeplex.com/MVCContrib anstelle von UpdateFrom.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top