2010-05-06 24 views
9

Realmente me falta mucho la capacidad de probar las vistas independientemente de los controladores. El camino RSpec does it.Vistas de prueba en ASP.NET MVC2 (ala RSpec)

Lo que quiero hacer es realizar aserciones en la vista representada (¡donde no está involucrado ningún controlador!). Para hacerlo, debería proporcionar el Modelo requerido, ViewData y tal vez algunos detalles del HttpContextBase (¿cuándo nos desharemos de HttpContext!).

Hasta ahora no he encontrado nada que me permita hacerlo. También podría depender mucho del ViewEngine que se esté utilizando.

Lista de cosas que son vistas pudieran contener:

  • vistas parciales (pueden estar anidados profundamente).
  • Páginas maestras (o similares en otros motores de visualización).
  • Html helpers que generan enlaces y otros elementos.
  • En general, casi cualquier cosa en un rango de sentido común :).

También tenga en cuenta que no estoy hablando de pruebas del lado del cliente y, por lo tanto, el selenio simplemente no está relacionado con él en absoluto. Es simplemente una prueba de .NET.

¿Hay alguna opción para probar las vistas?

Gracias,
Dmitriy.

Respuesta

2

El problema principal al probar vistas completas es que el motor de vistas asp.net llama a Response.Write en el contexto provisto/y no en el escritor suministrado.

Lo anterior no es el caso para las pruebas de vistas parciales, así que para los que se pueden usar esta solución: http://www.brightmix.com/blog/renderpartial-to-string-in-asp-net-mvc/

Hay otros motores de vista que permiten probar la vista, es decir chispa.

ps. el concepto en asp.net mvc es que deberías poder probar la vista usando ViewEngine, pero como entiendo, el equipo de asp.net mvc no solucionó las restricciones del motor asp.net existente para poder hacerlo para su motor de vista.

+0

Sin duda miraré a Spark. Usé NHaml anteriormente, pero no estoy seguro de que se puedan hacer pruebas con él. Gracias por la respuesta. –

1

Es posible que desee comprobar los UI Test Helpers que Eric Hexter y los chicos con MVCContrib están trabajando. No he tenido la oportunidad de verlo en profundidad, pero puede ser útil. Encontré este enlace que muestra algo de la sintaxis: http://codepaste.net/cw8ie4

Me interesaría saber lo que averiguas, ya que también lo estaré haciendo muy pronto.

+0

Brian, el 'MvcContrib.TestHelper.Ui' permite pruebas de integración usando un marco como WatiN o Selenium. No necesito eso. Realmente solo necesito renderizar la vista (pasando el modelo requerido a i) y afirmarlo en su contenido (preferiblemente usando los selectores CSS/XPath). –

+0

Ya veo.Pero, eso me lleva a otra pregunta. ¿Qué probarías en ese punto? Me parece que estarías probando que el motor de renderizado funciona. ¿Dónde está el punto de que solo debes confiar en el marco? –

+2

Voy a probar el HTML generado, asegurando que la FORMA, ENTRADA y otros elementos correctos sean presentados y válidos. De esta forma puedo estar seguro de que, por ejemplo, las páginas no se romperán después de que un diseñador haya aplicado un nuevo diseño. –

0

Interesado para saber si encuentra algo para .Net que hace esto. Nuestra aplicación actual es WPF, pero estamos obligados a confiar en que Cucumber toque nuestras vistas en todas nuestras características ... así que sí, eso apesta. Espero que encuentres algo y nos actualices.