2010-09-29 10 views
5

¿Hay algún valor tangible en la prueba de unidad de sus propios htmlhelpers? Muchas de estas cosas solo escuchan un montón de marcas HTML, hay poca o ninguna lógica. Entonces, ¿acabas de comparar una gran cadena html con otra? Quiero decir, algunas de estas cosas requieren que mires el marcado generado en un navegador para verificar que sea el resultado que deseas.¿Por qué debería probar mis HTMLHelpers?

Parece un poco inútil.

+1

Ve a usar HtmlTags para generar tu marcado. Está incluido en FubuMVC pero puede compilarlo por separado. No tendrá que preocuparse por el cierre de etiquetas o citas fuera de lugar. – Ryan

Respuesta

2

Sí.

Si bien puede haber poca o ninguna lógica ahora, eso no significa que no vaya a haber más lógica agregada en el futuro. Cuando se agrega esa lógica, quiere asegurarse de que no rompa la funcionalidad existente.

Esa es una de las razones por las que se escriben las pruebas unitarias.

Si está siguiendo el desarrollo impulsado por prueba, primero escriba la prueba y luego escriba el código para cumplir con la prueba.

Esa es otra razón.

También querrá asegurarse de identificar y probar posibles casos extremos con su Helper (como literales HTML sin escape, caracteres especiales no codificados, etc.).

+0

¿Por qué estás poniendo lógica en un helper html? ¿No debería ser eso en tu modelo? Además, si usa un modelo para generar html (como HtmlTags o incluso TagBuilder), entonces no tendrá que preocuparse por qué salida se está generando. – Ryan

+0

@Ryan - El modelo es su información ... no debería haber ninguna lógica allí. Html Helpers está allí estrictamente para ayudar a la Vista a renderizar el Modelo correctamente. Dependiendo del modelo, es posible que se necesite una lógica simple para representar correctamente las cosas en el navegador. Otros ayudantes son más complicados ... como Html.TextBoxFor(). –

+0

"El modelo es su información ... no debería haber ninguna lógica allí". Realmente no estoy seguro de qué decir a eso. O tenemos diferentes ideas de lo que es un modelo, o estás trabajando directamente con entidades de BD. Yo personalmente prefiero un modelo rico y basado en el comportamiento. En cuanto a los helpers html, creo que el más complejo es de 3 líneas y simplemente está llamando a un marco de plantillas que tomé prestado de FubuMVC. – Ryan

0

Supongo que depende de cuántas personas usarán/modificarán. Normalmente creo una prueba unitaria para un helper html si sé que mucha gente podría tenerlo en sus manos, o si la lógica es compleja. Sin embargo, si voy a ser el único que lo use, no voy a perder mi tiempo (o el dinero de mi empleador).

Puedo entender que no quiera escribir las pruebas ... puede ser molesto escribir unas pocas líneas de código de generación html que requieran 5 veces esa cantidad para probar.

0

toma una entrada simple y expone una salida simple. Esta es una buena idea para TDD, ya que la vez que iba a gastar en construir-> iniciar sitio-> arreglar ese tonto problema-> volver a empezar-> oops, se perdió esta otra cosa pequeña-> empezar ... hemos terminado , contento :). Dev 2 viene y hace pequeños cambios para "arreglarlo" para algo que no estaba funcionando para entonces, el mismo ciclo continúa y el desarrollador 2 no se dio cuenta en el momento en que rompió sus otros escenarios.

En su lugar, usted v. Haga rápidamente el texto sencillo simple, y ese resultado simple le dio ese resultado simple que esperaba con todas las etiquetas de cierre y las citas que esperaba.

0

Después de escribir HTML Helpers para menús de mapa de sitio, por ejemplo, o botones para un asistente de marco, puedo asegurarle que algunos Ayudantes tienen mucha lógica que necesita ser confiable, especialmente si se pretende que otros la utilicen.

Así que depende de lo que haga con ellos realmente. Y solo tú sabes la respuesta a eso.

La respuesta general es que Html Helpers puede ser arbitrariamente complejo (o simple), dependiendo de lo que esté haciendo. Así que el obvio pan comido, como con cualquier otra cosa, es probar cuando lo necesites.

0

Sí, hay un valor. Cuánto valor se determinará. ;-)

Puede comenzar con las pruebas básicas "devuelve ALGUNA VEZ", y realmente no le importa QUÉ. Básicamente solo pruebas rápidas de cordura, en caso de que algo fundamental se rompa. Luego, cuando surjan problemas, agregue más detalles.

Considere también hacer que sus pruebas analicen el HTML en DOM, que son mucho más fáciles de probar que las cadenas, especialmente si está buscando solo un bit específico.

O ... si tiene pruebas automáticas contra la propia aplicación web, asegúrese de que haya pruebas que busquen específicamente la salida de sus ayudantes.

0

Sí, debería ser probado. Regla básica, si no vale la pena probar, no vale la pena escribir.

Sin embargo, debe tener un poco de cuidado aquí cuando redacte sus pruebas. Existe el peligro de que puedan ser muy "frágiles".

Si escribe sus pruebas de modo que recupere una cadena específica, y tiene algunos ayudantes que llaman a otros ayudantes. Un cambio en uno de los asistentes básicos podría causar que muchas pruebas fallen.

Por lo tanto, tal vez sea mejor probar que obtiene un valor no nulo, o que un texto específico está contenido en algún lugar en el valor de retorno. En lugar de probar una cadena exacta.

Cuestiones relacionadas