Pregunta

Estoy escribiendo pruebas unitarias para un módulo en una pequeña aplicación Javascript. Con el fin de mantener la interfaz limpia, algunos de los detalles de implementación están cerrados por más de una función anónima (el patrón habitual JS por privacidad). Sin embargo, mientras que las pruebas que necesito para acceder a / maqueta / verificar que las partes privadas.

La mayoría de las pruebas que he escrito previamente han sido en Python, donde no hay variables privadas reales (miembros, identificadores, lo que quieras llamarlos). Uno simplemente sugiere la privacidad a través de un guión que conduce a los usuarios, e ignora libremente mientras se prueba el código. En lenguajes orientados a objetos de tipos estáticos Supongo que uno podría hacer que los miembros privados accesibles a pruebas mediante la conversión a ser protegidos y la subclasificación del objeto a ensayar. En Javascript, este último no se aplica, mientras que el primero parece como una mala práctica.

Siempre podría caer de nuevo a las pruebas de caja negro y simplemente comprobar los resultados finales. Es el método más sencillo y limpio, pero por desgracia no es realmente lo suficientemente detallada para mis necesidades.

Entonces, ¿hay una forma estándar de mantener las variables mientras privada que conserva algunas puertas traseras para probar en Javascript?

¿Fue útil?

Solución

No. No creo que hay. Básicamente se reduce a si se mira desde el punto de cierre y renuncias a las pruebas de caja blanca o hacer pruebas de caja blanca y la decoración de nombres utilización para los miembros "privadas". En realidad, no sólo en Python, pero en javascript demasiados proyectos utilizan el subrayado no tan mágica para decorar partes íntimas. Así que en cierto modo esto es ya una solución ampliamente aceptada al problema.

Si usted no quiere eso y realmente, realmente necesita la unidad de pruebas de caja blanca, entonces siempre se puede integrar en las pruebas de sus objetos. Si usted tiene un paso de generación independiente para el código de producción (minimización, requieren / proporcionar resolución, etc), entonces usted puede quitar las funciones de prueba en este proceso.

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