Probablemente este no sea el primer tutorial sobre pruebas que hayas visto. Pero quizás haya tenido sus dudas sobre las pruebas y nunca se haya tomado el tiempo para leerlas. Después de todo, puede parecer un trabajo extra sin ninguna razón..
Este tutorial pretende cambiar tus puntos de vista. Vamos a comenzar desde el principio: ¿qué es la prueba y por qué debería hacerlo? Luego, hablaremos brevemente sobre la escritura de código verificable, antes de que se haga algunas pruebas. Hagámoslo!
Muy simple, pruebas es la idea de tener un conjunto de requisitos que una determinada pieza de código debe pasar para que sea lo suficientemente robusta como para ser utilizada en el mundo real. A menudo, escribimos algo de JavaScript y luego lo abrimos en el navegador y hacemos clic un poco para asegurarnos de que todo funciona como esperábamos. Aunque a veces es necesario, ese no es el tipo de prueba del que estamos hablando aquí. De hecho, espero que este tutorial lo convenza de que la autoevaluación rápida y sucia debería complementar un procedimiento de prueba más rígido: la autoprueba está bien, pero una lista completa de requisitos es primordial.
Como puede imaginar, el problema con las pruebas de JavaScript de actualizar y hacer clic alrededor es doble:
Por escrito pruebas Para comprobar todo lo que debería hacer su código, puede verificar que su código esté en la mejor forma antes de utilizarlo en un sitio web. Para cuando algo se está ejecutando en un navegador, es probable que haya varios puntos de falla. Las pruebas de escritura le permiten concentrarse en cada parte comprobable individualmente; Si cada pieza hace su trabajo correctamente, las cosas deberían funcionar juntas sin problema (probar partes individuales como esta se llama prueba de unidad).
Si eres un políglota de programación), es posible que hayas hecho pruebas en otros idiomas. Pero he encontrado pruebas en JavaScript una bestia diferente para matar. Después de todo, no está construyendo demasiadas interfaces de usuario en, por ejemplo, PHP o Ruby. A menudo, estamos haciendo trabajo de DOM en JavaScript, y exactamente cómo lo pruebas?
Bueno, el trabajo de DOM no es para lo que quieres escribir pruebas; es la logica Obviamente, entonces, la clave aquí es separar su lógica y su código de UI. Esto no siempre es fácil; He escrito mi parte justa de la interfaz de usuario con jQuery, y se puede ensuciar bastante rápido. Esto no solo hace que sea difícil de probar, sino que la lógica entrelazada y el código UI también pueden ser difíciles de modificar cuando cambia el comportamiento deseado. He encontrado que el uso de metodologías como plantillas (también, plantillas) y pub / sub (también, pub / sub) hace que la escritura sea mejor, el código más fácil de probar.
Una cosa más, antes de comenzar a codificar: ¿cómo escribimos nuestras pruebas? Hay numerosas bibliotecas de prueba que puede usar (y muchos buenos tutoriales para enseñarle a usarlos; vea los enlaces al final). Sin embargo, vamos a construir una pequeña biblioteca de pruebas desde cero. No será tan elegante como algunas bibliotecas, pero podrá ver exactamente lo que está pasando.
Con esto en mente, vamos a trabajar!
Vamos a construir una micro galería de fotos: una simple lista de miniaturas, con una imagen que se muestra en tamaño completo sobre ellas. Pero primero, vamos a construir una función de prueba.
A medida que obtenga más información sobre las pruebas y las bibliotecas de pruebas, encontrará numerosos métodos de prueba para probar todo tipo de aspectos específicos. Sin embargo, todo puede reducirse a si dos cosas son iguales o no: por ejemplo,
Entonces, aquí está nuestro método para probar la igualdad:
var TEST = areEqual: function (a, b, msg) var result = (a === b); console.log ((result? "PASS:": "FAIL:") + msg); resultado de retorno ;
Es bastante simple: el método toma tres parámetros. Los dos primeros se comparan, y si son iguales, las pruebas pasan. El tercer parámetro es un mensaje que describe la prueba. En esta sencilla biblioteca de pruebas, solo estamos enviando nuestras pruebas a la consola, pero puede crear una salida HTML con el estilo CSS adecuado si lo desea.
Aquí esta la areNotEqual
método (dentro del mismo PRUEBA
objeto):
areNotEqual: function (a, b, msg) var result = (a! == b); console.log ((result? "PASS:": "FAIL:") + msg); resultado de retorno
Notarás las dos últimas líneas de son iguales
y areNotEqual
lo mismo. Entonces, podemos sacarlos así:
var TEST = areEqual: function (a, b, msg) return this._output (a === b, msg), areNotEqual: function (a, b, msg) return this._output (a! == b, msg); , _output: function (result, msg) console [result? "log": "warn"] ((result? "PASS:": "FAIL:") + msg); resultado de retorno ;
¡Genial! Lo bueno aquí es que podemos agregar otros métodos de "azúcar" usando los métodos que ya hemos escrito:
TEST.isTypeOf = function (obj, type, msg) return this.areEqual (typeof obj, type, msg); ; TEST.isAnInstanceOf = function (obj, type, msg) return this._output (obj instanceof type, msg); TEST.isGreaterThan = function (val, min, msg) return this._output (val> min, msg);
Puedes experimentar con esto por tu cuenta; Después de seguir este tutorial, tendrás una buena idea de cómo usarlo..
Entonces, vamos a crear una galería de fotos súper simple, usando nuestro mini PRUEBA
Marco para crear algunas pruebas. Aquí mencionaré que si bien el desarrollo basado en pruebas es una gran práctica, no lo usaremos en este tutorial, principalmente porque no es algo que pueda aprender en un solo tutorial; se necesita mucha práctica para realmente gruñir. Cuando empiezas, es más fácil escribir un poco de código y luego probarlo.
Entonces, vamos a empezar. Por supuesto, necesitaremos algo de HTML para nuestra galería. Vamos a mantener esto bastante básico:
Pruebas en JavaScript
Hay dos cosas principales que vale la pena notar aquí: primero, tenemos un que contiene el marcado muy simple para nuestra galería de imágenes. No, probablemente no sea muy robusto, pero nos da algo con lo que trabajar. Entonces, note que estamos enganchando tres.
>