Pero, ¿qué tipos de validaciones de formularios existen? Quiero decir, esa no puede ser la primera biblioteca de validación de formularios. Quiero decir, todos hemos utilizado bibliotecas de validación de formularios, tanto en el cliente como en el servidor. Así que intentaré dar una breve descripción de lo que hay, y luego entenderemos cómo VEST es diferente.
Y primero tenemos los comparadores funcionales, como funciones básicas como isEmail, isNumber, más largo que, que básicamente nos dan una respuesta booleana si algún valor cumple con ciertos criterios. Y esto es realmente simple y también es muy útil. Pero no se preocupa mucho por la estructura, no nos ayuda con el mantenimiento, y tampoco con las pruebas. Y esto es muy útil, pero no es una solución completa para la validación de formularios.
En segundo lugar, tenemos las bibliotecas de validación de esquemas que dan un paso más allá de lo que acabamos de describir. Toman la forma de los datos, la estructura de los datos y la forma de los datos en su totalidad debe cumplir con ciertos criterios. Y esto es bueno principalmente para el nivel de la API. Pero cuando se trata del cliente, no tanto. Quiero decir, ¿qué haces cuando el usuario interactúa con un formulario, como escribir en el campo de nombre de usuario? ¿Validas todo el conjunto, todo el esquema? Y también es muy difícil describir ideas complejas, como campos que dependen entre sí, dentro de un esquema. Así que es muy útil, pero no necesariamente de la forma en que queremos que sea.
Y en tercer lugar, tenemos en el cliente bibliotecas de validación de estado de formulario o gestión de estado específicas del framework que son específicas del framework y te proporcionan componentes o controladores de eventos o directivas para usar en tu aplicación. Y lo que hace básicamente es quitarte un poco de control, pero te brinda toda la gestión de estado del formulario y toda la validación de formularios para el formulario, y luego estás listo y es bueno. Pero el problema es que es específico del framework, específico del framework de interfaz de usuario, por lo que no podemos compartir fácilmente entre el cliente y el servidor, o entre Angular o React o Vue, y la mayoría de nosotros tenemos al menos algunas aplicaciones o algunos tipos diferentes de nuestras aplicaciones. Y también, porque te quitan el control, ponen sus cosas dentro de tu aplicación, es muy difícil recuperar ese control cuando necesitas evitar algún comportamiento. Es bueno, pero no necesariamente, nuevamente, de la forma en que queremos que sea.
¿Y cómo encajan las pruebas unitarias? Esto es Test.js. Hace un par de años, como hace seis años, comencé a escribir pruebas unitarias como parte de mi trabajo, y me di cuenta de esto. Cuando escribimos una prueba unitaria, tenemos nuestra suite de pruebas unitarias. Que generalmente comienza con un describe, no tiene que ser así, pero comienza con alguna suite de nivel superior que describe la idea de lo que estamos probando nuestra función o aplicación o lo que sea. Dentro de ella, tenemos una serie de pruebas que básicamente describen qué afirmación estamos haciendo ahora y cuál es el error que mostraremos en caso de fallo. Luego tenemos nuestra afirmación, por ejemplo, expect y lo que esperamos que sea. ¿Y si pudiéramos usar esa misma idea dentro del mundo de la validación de formularios? Quiero decir, es prácticamente lo mismo. Cuando escribimos un formulario, tenemos nuestro concepto más alto de un formulario que queremos describir. Dentro de él, tenemos los diferentes campos, un conjunto de campos que queremos probar, y luego solo queremos hacer una afirmación. Ahora, en lugar de afirmar el comportamiento, queremos afirmar los datos. Jugué con esta idea específica, y esto es lo que se me ocurrió. Primero, creamos nuestra suite de validación de formularios.
Comments