Question

Je l'écriture des tests unitaires pour un module dans une petite application Javascript. Afin de garder l'interface propre, certains détails de mise en œuvre sont fermés en charge par une fonction anonyme (le schéma habituel JS de la vie privée). Cependant, tout en testant j'ai besoin d'accéder à / faux / vérifier les pièces privées.

La plupart des tests que j'ai écrit ont déjà été en Python, où il n'y a pas de véritables variables privées (membres, identifiants, tout ce que vous voulez les appeler). On suggère simplement la vie privée par un underscore pour les utilisateurs, et ne tient pas compte librement tout en testant le code. Dans les langues OO tapées Je suppose que statiquement on pourrait faire des membres privés accessibles aux tests en les convertissant à protéger et Dériver l'objet à tester. En Javascript, ce dernier ne s'applique pas, alors que l'ancien semble comme une mauvaise pratique.

Je pourrais toujours revenir à des tests de boîte noire et simplement vérifier les résultats finaux. Il est l'approche la plus simple et la plus propre, mais malheureusement pas vraiment assez détaillé pour mes besoins.

Alors, est-il un moyen standard privé de variables en gardant tout en conservant des backdoors pour tester en Javascript?

Était-ce utile?

La solution

Non

. Je ne crois pas qu'il y ait. Il se résume essentiellement à savoir si vous prenez l'approche de fermeture et renoncez tests boîte blanche ou faire des tests de boîte blanche et décoration de nom d'usage pour les membres « privés ». En fait, non seulement en Python, mais en javascript trop de projets utilisent le trait de soulignement pas magique pour décorer privates. D'une certaine manière ce qui est déjà une solution largement acceptée au problème.

Si vous ne voulez pas que et vraiment, vraiment besoin de tests unitaires boîte blanche, vous pouvez toujours intégrer des tests dans vos objets. Si vous avez une étape de construction séparé pour le code de production (réduction, exiger / fournir résolution, etc.), vous pouvez supprimer les fonctions de test dans ce processus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top