Essayer de comprendre comment, à se moquer de la taille de la fenêtre en train de changer pour une réagir la composante test
Donc, fondamentalement, lorsque le composant monte, j'ai un écouteur d'événement écouter les événements de redimensionnement. Il bascule la isMobileView état et passe ensuite dans les enfants comme un accessoire. Il est donc impératif que cela fonctionne et est testé. Je suis assez nouveau à l'essai et j'essaie de trouver un moyen pour que je puisse écrire un test qui se redimensionne la fenêtre et fait toute la logique de produire et de test qu'il a exécuté la façon dont il le devrait.
Voici le code -
componentDidMount() {
this.setMobileViewState()
window.addEventListener('resize', this.setMobileViewState.bind(this));
}
setMobileViewState() {
if(document.documentElement.clientWidth <= this.props.mobileMenuShowWidth) {
this.setState({ isMobileView: true })
} else {
this.setState({ isMobileView: false })
}
}
Je sais que le code fonctionne, mais je veux écrire un test pour elle. Fondamentalement juste quelque chose qui fait en sorte que les changements d'état de correctement.
- Je peux vous montrer comment le tester dans ce moka/sinon si ça vaut quelque chose pour vous.
- qui serait parfait, je veux une introduction à l'sinon ce serait un grand moment pour moi de l'apprendre, je suppose. Si je vois code de travail, il va beaucoup m'aider si. Vous ne savez pas si je peux le comprendre, à partir d'autres exemples
- Toutes mes excuses, je pensais que je pouvais le faire fonctionner mais je ne peux pas comprendre comment le stub document.documentElement
Vous devez vous connecter pour publier un commentaire.
À l'aide de la Plaisanterie et de l'Enzyme vous pouvez effectuer les opérations suivantes. La plaisanterie a JSDOM cuit. Dans vos tests Plaisanterie fournit la
window
objet et il est représenté parglobal
(je pense que le défautwindow.innerWidth
fixé par Plaisanterie est 1024px):[email protected]
resizeBy
serait logique de les utiliser, mais la Plaisanterie ne pas la mettre et lainnerWidth
n'est pas en lecture seuleProperty 'innerWidth' does not exist on type 'Global'
Si vous obtenez le tapuscrit message d'erreur
Essayer: