Introscopio: bueno, pruebas unitarias muy flojas

En el trabajo, escribimos mucha lógica empresarial que cambia con frecuencia en JS (inicio). Incluso demasiado Y quiero probar todo esto fuera del viejo hábito, pero de alguna manera más rápido, para que las pruebas no interfieran con el govnokod cuando sea necesario, y la estructura de los módulos no esté especialmente personalizada para las pruebas. En algún momento, surgió la idea de que también podría automatizarse de alguna manera con la ayuda de un simple complemento de babel, de modo que, para empezar, resultaría en todas las variables y métodos privados en un entorno de prueba, pero no lo tocaría en la producción. Resultó ser bastante simple y divertido. Así es como surgió Introscope , con el que ahora estamos probando todo más o menos complicado.


Después de entregar el proyecto, estuve distraído durante varios meses para mejorar la implementación y el monitoreo, descansé, estimaba Habr, y cuando tuve que probar algo nuevamente, ¡me encantó mi herramienta de inmediato! Esto no me pasa a menudo. Más precisamente, nunca ha sido. Entonces, creo que la cosa funciona. Espero que seas útil también.


Brevemente, ¿qué puede hacer?


  1. Envuelve todo el módulo en una función de fábrica para que pueda crear tantos módulos nuevos durante la prueba como necesite. Esto elimina la necesidad de desmontar.
  2. Como el módulo está envuelto, tulza sabe exactamente qué variables importa el módulo y puede generar moki por su tipo. Esto funciona muy bien para un estilo más o menos funcional.
  3. Es capaz de registrar llamadas y argumentos a funciones desde módulos externos y ponerlo todo en un registro, que luego se serializa maravillosamente para instantáneas (si usa Jest, todo comenzará de inmediato).
  4. Función asesina: puede guardar el resultado de llamar a una función externa y usarla para más pruebas. Es muy conveniente cuando se prueban las solicitudes de servicios externos que solíamos manejar en moki con nuestras manos.
  5. En combinación con Jest, las pruebas se actualizan presionando un botón U (no estoy bromeando), que actualiza las instantáneas. Enfoque de prueba de oro en todo su esplendor.
  6. Trabaja en producción durante casi un año.

Como resultado


Las pruebas comenzaron a ser escritas por personas que anteriormente ni siquiera querían saber sobre ellas, porque solo necesita llamar a la función con los parámetros necesarios y guardar el registro de lo que sucedió en esta función con un solo botón. Solo quería probar algo más ...


Enlace: Introscopio (¡también hay capturas de pantalla gif!). Estaría muy feliz por las críticas constructivas y los enlaces a las mismas, pero lo hice mucho mejor: D


imagen

Source: https://habr.com/ru/post/437104/


All Articles