Ce test est extrêmement simple et devrait être direct… mais…
Un paramètre de plugin change par rapport à ce que j’ai configuré.
Lorsque le JavaScript s’exécute suite au chargement du Compositeur, la valeur du paramètre définie plus tôt dans le bloc d’acceptation n’est plus la même !
Elle devrait être “user” comme défini dans le code de test, mais si je fais un console.log, voici ce que je vois, et pourquoi le test échoue :
J’ai testé cela localement. Il semble y avoir plusieurs facteurs en jeu :
L’objet siteSettings auquel vous faites référence est obtenu par l’initialiseur, puis utilisé dans un appel modifyClass :
Les initialiseurs sont réexécutés pour chaque test. Le problème est que nous n’avons aucun moyen de « réinitialiser » les appels modifyClass qui ont été effectués par les tests précédents. Notre solution est le paramètre pluginId : cela signifie que seul le premier appel modifyClassde toute la suite de tests est réellement utilisé. Les appels à modifyClass provenant d’initialiseurs dans les tests futurs sont ignorés.
Normalement, cela convient, car le code à l’intérieur d’une invocation modifyClass ne change pas beaucoup à chaque exécution de test. Cependant, dans ce cas, vous faites référence à la référence siteSettings du scope des initialiseurs.
En bref : dans les tests, cette implémentation signifie que modifyClass sera bloqué avec les paramètres du site de celui des tests qui a été le premier à s’exécuter.
La solution consiste à utiliser une référence siteSettings « au moment de l’exécution » plutôt qu’au « moment de l’initialisation ». Nous pouvons utiliser celle de model:composer lui-même. Ce diff permet aux tests de passer pour moi :
Il y a un autre problème ici que je soupçonne être dû à la même raison :
currentUser est également défini dans l’initialiseur.
Si le mauvais test s’exécute en second, celui-ci est évalué et n’est plus défini, de sorte que les tests lorsqu’ils sont exécutés ensemble peuvent échouer “la moitié” du temps.
Je pense que le modèle Composer a user, donc je vais passer à celui-ci…