2017-04-02 1 views
2

J'ai écrit et utilisé un décorateur dans mon projet, et j'essaie maintenant de tester que les fonctions qui sont emballées avec le décorateur sont enveloppé avec le décorateur. Je suppose que je pourrais tester que ce qui se passe dans le décorateur est en train de se produire, ce que je sais déjà faire, mais ma préférence serait de se moquer complètement du décorateur et de simplement affirmer que la fonction est en train d'être enveloppée.Comment tester qu'une fonction est emballée avec un décorateur (javascript)

Est-ce que quelqu'un sait comment s'y prendre (heureusement avec sinon/chai)?

+0

Vérifiez les fonctionnalités que le décorateur aurait dû partager avec la fonction/classe décorée – topheman

+1

Offtop. Les décorateurs ne sont pas caractéristiques d'ES7. Étape 2 encore. https://github.com/tc39/proposal-decorators – Artin

+0

Je ne veux pas vérifier que le décorateur fait quelque chose, j'essaie de le tester unitaire. Et @Artin vous avez raison, mais ma question est toujours, comment dois-je éditer la question pour refléter cela? –

Répondre

1

Il n'y a pas de métadonnées sur les objets qui ont été décorés par une fonction spécifique - les décorateurs ne sont que du sucre syntaxique et peuvent être appliqués différemment. Alors oui, affirmer que ce qui devait arriver dans le décorateur est effectivement arrivé est la seule façon. Vous pouvez mock le décorateur et tester explicitement qu'il a été appliqué en définissant un drapeau spécifique ou même en vérifiant les arguments et la valeur de retour du décorateur, mais vous ne devriez probablement pas. Les décorateurs sont un détail de mise en œuvre, ne pas tester pour eux - tester les comportements que le décorateur fournit.

+0

Ok merci pour l'aide, pensé que je demanderais si c'était possible avant de retomber dans l'autre sens. –