Solo quieres asegurarte de que, ya sabes, alguna parte de ese mensaje de error porque los errores, ya sabes, también agregan algún estándar al frente, por ejemplo, un error de dos puntos y solo quieres asegurarte de que tu mensaje de error esté ahí, ¿verdad? Y podemos hacer esto, ya sabes, con un índice de comprobación. Y luego, ya sabes, no queremos que sea menos uno porque significaría que no está ahí. Sin embargo, nuevamente, ese mensaje de error esperado no menos uno no nos ayuda mucho.
Nuevamente, afortunadamente para nosotros, Jest como un marco de pruebas que estoy usando aquí nos ofrece una afirmación que simplemente pasa una función que queremos lanzar y espera que lance un cierto mensaje de error. Ahora, nuevamente, la salida de error se ve ligeramente diferente. En primer lugar, vemos lo que esperábamos. Ahora vemos lo que recibimos en su lugar, mensaje personalizado. Y también nos señala directamente desde dónde se lanzó el error. Y esto puede, ya sabes, una vez más, darte más contexto para trabajar con tu código. Y luego solucionar ese error, con suerte.
Hay, ya sabes, probablemente muchos de ustedes que trabajan con DOM. Algunos de ustedes podrían estar trabajando con la biblioteca de pruebas. Y hay adiciones muy buenas a Jest. Jest DOM es una de ellas. Si estás trabajando con la biblioteca de pruebas, eso te brinda un montón de afirmaciones personalizadas para verificar los atributos de accesibilidad, los estados de la interfaz de usuario, habilitado, deshabilitado, habilitado, enfoque, todo este tipo de cosas. Pero todo esto cae en la misma categoría, ¿verdad? Mi sugerencia general sería, ya sabes, elige la afirmación que se acerque más a lo que realmente quieres hacer, ya sea que quieras verificar una propiedad, que quieras verificar un error, que quieras verificar un cierto estado de la interfaz de usuario, y luego ve con eso, ya sabes, en lugar de simplemente construir alguna forma de condición booleana y luego verificar que sea verdadera o falsa porque eso no te dará mucho.
Ok, esto concluye básicamente la primera mitad, ¿verdad? Estructura general de las pruebas. Hablamos de las afirmaciones y las descripciones de las pruebas y especialmente, ya sabes, trabajar solo con un caso de uso a la vez. Ahora veamos algo de código de prueba, ¿de acuerdo? Por ejemplo, esta prueba, funciona perfectamente. Sin embargo, hay mucho sucediendo aquí, ¿verdad? Entonces, básicamente esta prueba solo verifica que si cambiamos una entrada, nuestro controlador onChange se llame con la propiedad correcta. Pero, ya sabes, tenemos mucha configuración, muchas, ya sabes, interacciones sucediendo aquí abajo. Y la pregunta que haría es, ya sabes, ¿todas estas interacciones son necesarias? Y podría ser, ¿verdad? Y si es necesario, entonces en lugar de simplemente, ya sabes, escribirlo aquí, yo, ya sabes, seguiría adelante y extraería eso, por ejemplo, en un método, llámalo, por ejemplo, simulateChange, que tiene un valor. Y luego puedo mover esto aquí abajo, o simulateChange en su lugar. Entonces, toda la estructura de preparación, acción, estructura de esa prueba se volvió mucho, ya sabes, más limpia, ¿verdad? Y también esto tiene un nombre, ¿verdad? Queremos simular el cambio porque de eso se trataba este bloque, ¿verdad? Ahora, al extraerlo al método, darle a ese método un nombre adecuado, podemos simplemente hacer esto más claro para el lector. Sin embargo, veo mucho más. Por ejemplo, hay un onKeyDown, ya sabes, función definida aquí. Entonces ha pasado mucho tiempo desde que escuchamos que se pasa, pero nunca lo afirmamos. Entonces mi pregunta sería, ¿qué tan importante es, ¿verdad? Y esto, ya sabes, puede suceder especialmente si copias y pegas muchas pruebas porque esto podría haber sido importante en otra prueba de la que copiaste esto y nunca lo eliminaste, ¿verdad? Y al repetir esto, puedes inflar tus casos de prueba uno tras otro por eso personalmente siempre escribo pruebas desde el principio. Intento, ya sabes, no copiar y pegar en absoluto porque soy perezoso. Entonces, y mi pereza me obligará a escribir la menor cantidad de código y también, ya sabes, comenzar a extraer en métodos tan pronto como repita la misma estructura por segunda o tercera vez.
Comments