¿La mejor manera de realizar pruebas unitarias de los métodos de acción de ASP.NET MVC que utilizan BindingHelperExtensions.UpdateFrom?
-
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)
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.