¿La mejor manera de realizar pruebas unitarias de los métodos de acción de ASP.NET MVC que utilizan BindingHelperExtensions.UpdateFrom?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Al manejar una publicación de formulario tengo algo como

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

No estoy usando parámetros explícitos en el método porque anticipo tener que adaptarme a un número variable de campos, etc.y un método con más de 20 parámetros no es atractivo.

Supongo que mi única opción aquí es simular todo el HttpRequest, equivalente a lo que ha hecho Rob Conery.¿Es esta una mejor práctica?Es difícil saberlo con un marco que es tan nuevo.

También he visto soluciones que implican el uso de ActionFilter para que puedas transformar la firma del método anterior en algo como

[SomeFilter]
public Insert(Contact contact)
¿Fue útil?

Solución

ahora estoy usando Carpeta de modelos para que mi método de acción pueda verse (básicamente) como:

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

Otros consejos

Envuélvelo en una interfaz y simulalo.

Utilice NameValueDeserializer de http://www.codeplex.com/MVCContrib en lugar de Actualizar desde.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top