J'ai donc un React composant qui définit un intervalle comme ceci:Comment vérifier que clearInterval a été appelé avec sinon?
componentDidMount() {
this.interval = window.setInterval(this.myFunction, 500);
}
Et à la fin de son exécution, myFunction
tue l'intervalle en appelant clearInterval(this.interval);
J'utilise impressionnant de Sinon Fake Timer API pour faire que myFunction
est appelé après 500 ms comme ceci:
let clock;
beforeEach(() => {
clock = sinon.useFakeTimers();
});
...
it('should call my function',() => {
clock.tick(510);
expect(myFunction).to.have.been.called;
});
Mais je veux également vous assurer que la minuterie est terminée. Y at-il un moyen de vérifier clearInterval
a été appelé?
Je l'ai essayé en utilisant expect(window.clearInterval).to.have.been.called;
mais pas de chance, j'ai reçu un message d'erreur à la place. En outre, les docs de Sinon ne disent rien sur la façon de fournir un talon à clearInterval
.
Merci beaucoup!
En supposant que vous puissiez tester si 'clearInterval()' a été appelé, comment sauriez-vous combien de temps attendre avant de tester cela? Par exemple, comment sauriez-vous combien de fois la fonction a fonctionné avant de décider d'appeler 'clearInterval()'? – nnnnnn
@nnnnnn Je n'aurais pas vraiment besoin d'attendre, car l'intervalle était supposé avoir été effacé à la fin de 'myFunction'. Donc, si 'myFunction' avait été appelé, je devrais être capable de dire avec certitude que l'intervalle avait été terminé. – felipecao
Si l'intervalle est toujours effacé par 'myFunction()' la première fois qu'il est appelé alors cela n'a pas vraiment de sens d'utiliser 'setInterval()' du tout: vous devriez utiliser 'setTimeout()'. – nnnnnn