Estoy usando el patrón de módulo en Javascript para separar mi interfaz pública de la implementación privada. Para simplificar lo que estoy haciendo, mi código genera un gráfico. El gráfico se compone de varias partes (axises, etiquetas, la trama, la leyenda, etc.) Mi código es el siguiente:Prueba de funciones privadas en javascript
var Graph = function() {
var private_data;
function draw_legend() { ... }
function draw_plot() { ... }
function helper_func() { ... }
...
return {
add_data: function(data) {
private_data = data;
},
draw: function() {
draw_legend()
draw_plot()
}
}
}
Algunas personas sólo abogan por probar la interfaz pública de sus clases, lo cual tiene sentido, pero me Realmente me gustaría realizar algunas pruebas para probar cada uno de los componentes por separado. Si arruino mi función draw_legend(), me gustaría que fallara esa prueba, no una prueba para la función pública draw(). ¿Estoy en el camino equivocado aquí?
Podría separar cada uno de los componentes en diferentes clases, por ejemplo hacer una clase de Leyenda. Pero parece una tontería crear una clase para lo que a veces son solo 5-10 líneas de código, y sería más feo porque tendría que pasar un montón de estado privado. Y no podría probar mis funciones de ayudante. ¿Debo hacer esto de todos modos? ¿Debo aspirar y solo probar el sorteo público()? ¿O hay alguna otra solución?
Esto podría ser útil [Cómo probar Unidad funciones privadas en JavaScript] (http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/) – amirnissim