Au travail, nous écrivons beaucoup de logique métier changeant fréquemment dans JS (démarrage). Encore trop. Et je veux tester tout cela par habitude, mais en quelque sorte plus rapidement, afin que les tests n'interfèrent pas avec le govnokod quand il est nécessaire, et la structure des modules n'est pas particulièrement personnalisée pour les tests. À un moment donné, l'idée est venue qu'il pourrait également être automatisé d'une manière ou d'une autre à l'aide d'un simple plug-in babel, de sorte que pour commencer, il se révélerait toutes les variables et méthodes privées dans un environnement de test, mais ne le toucherait pas en production. Cela s'est avéré assez simple et amusant. C'est ainsi qu'a vu le jour l' Introscope , avec lequel nous testons maintenant tout plus ou moins compliqué.
Ayant remis le projet, j'ai été distrait pendant plusieurs mois pour améliorer le déploiement et le suivi, reposé, estimé Habr, et quand j'ai eu besoin de tester à nouveau quelque chose, j'ai tout de suite été ravi de mon propre outil! Cela ne m'arrive pas souvent. Plus précisément, il ne l'a jamais été. Donc, je pense que la chose fonctionne. J'espère que vous serez utile aussi.
En bref, que peut-il faire?
- Enveloppe le module entier dans une fonction d'usine afin que vous puissiez créer autant de nouveaux modules pendant les tests que vous le souhaitez. Cela élimine la nécessité de faire unmock.
- Puisque le module est encapsulé, tulza sait exactement quelles variables le module importe et peut générer des moki par leur type. Cela fonctionne très bien pour un style plus ou moins fonctionnel.
- Il est capable de journaliser les appels et les arguments des fonctions des modules externes et de tout mettre dans un journal, qui est ensuite magnifiquement sérialisé pour les instantanés (si vous utilisez Jest, tout commencera immédiatement).
- Fonction Killer: peut enregistrer le résultat de l'appel d'une fonction externe et l'utiliser pour des tests supplémentaires. C'est très pratique lorsque vous testez des demandes de services externes que nous utilisions pour conduire dans moki avec nos mains.
- En combinaison avec Jest, les tests sont mis à jour en appuyant sur un bouton U (je ne plaisante pas), qui met à jour les instantanés. L'approche Golden test dans toute sa splendeur.
- Fonctionne en production depuis près d'un an.
En conséquence
Les tests ont commencé à être écrits par des personnes qui auparavant ne voulaient même pas en entendre parler, car il vous suffit d'appeler la fonction avec les paramètres nécessaires et d'enregistrer le journal de ce qui s'est passé dans cette fonction avec un seul bouton. Je voulais juste tester autre chose ...
Lien: Introscope (il y a aussi des screencasts gif!). Je serais très heureux pour les critiques constructives et les liens avec les mêmes, mais j'ai fait beaucoup mieux: D
