Sto usando CSSTransitionGroup
per animare un elemento quando appare nel DOM o quando lascia il DOM. Funziona bene.Disabilita React's CSSTransitionGroup in prova
Ora - Voglio testare questo componente. Sto creando un nodo DOM temporaneo e lo allego allo <body>
, eseguo il rendering del mio componente e quindi eseguo alcune azioni. Di conseguenza, mi aspetto che un nodo DOM figlio scompaia.
Il problema: Le classi di animazione vengono applicate e il componente viene mantenuto nel DOM fino alla fine delle animazioni CSS. Questo significa che il mio test dovrebbe aspettare anche qualche centinaio di millisecondi prima che possa affermare che quell'elemento è andato via. Non posso farlo, voglio che i miei test siano veloci, poiché si tratta di test unitari.
La domanda: C'è un modo per disabilitare le transizioni CSS senza aggiungere opzioni extra al mio componente?
Quello che ho provato: Test di unità funziona bene. Posso liberarmi delle animazioni passando un parametro al mio componente che non lo farà usare CSSTransitionGroup
. Quindi, nel peggiore dei casi, farò proprio questo. Ma sto cercando una soluzione migliore.
Potrei anche affermare che le classi "-enter"/"- enter-active"/"- leave"/"- leave-active" sono presenti su un elemento in questione. Tuttavia, sembra un po 'hacky, dato che potrei immaginare un bug in cui verrebbero applicate tali classi, ma l'elemento rimarrebbe nel DOM. Preferirei non ricorrere a questo approccio.
È possibile prendere in giro il componente. Se stai usando Jest puoi usare ['ReactTestUtils.mockComponent'] (https://facebook.github.io/react/docs/test-utils.html#mockcomponent). Non mi preoccuperei di testare direttamente la funzionalità di 'CSSTransitionGroup'. – Aaron
in che modo la patch moneky reagisce durante l'esecuzione dei test? e quindi disabiliti CSSTransitionGroup lì. – goldylucks
L'ho fatto alla fine, @AdamGoldman. Mi hai ricordato che probabilmente dovrei rispondere alla mia domanda qui. – kamituel