cy.spy qui surveille la fonction window.clearInterval
P粉023326773
2023-08-17 12:16:34
<p>Dans une application que je développe, j'utilise setInterval et clearInterval. Je souhaite surveiller la méthode clearInterval pour voir si elle est appelée. Voici ce que je fais réellement : </p>
<pre class="brush:php;toolbar:false;">beforeEach(() => {
cy.clock (nouvelle date ())
})
it('Scénario de test' => {
const fn = cy.spy(document.defaultView, 'clearInterval')
// J'ai également essayé fn = cy.spy(window, 'clearInterval')
...
...
...
//La fonction clearInterval est appelée lors de l'entrée dans la section `then`, mais le stub signale qu'elle n'a pas encore été appelée
cy.tick(30000).then(() => {
s'attendre à ce que (fn).soit.été.appeléune fois
})
})
aprèsEach(() => {
cy.clock().invoke('restaurer')
})</pré>
<p>L'assertion expect dans l'extrait ci-dessus échoue, je m'attends à ce qu'elle réussisse. Ma logique d'initialisation de l'espion est-elle valide/correcte ? Toute aide concernant le problème ci-dessus est grandement appréciée. </p>
Cypress utilise différentes
window
。cy.spy(window...
使用的是测试窗口,但要对应用程序窗口进行监视,您需要使用cy.window()
commandes dans les tests et les applications.Mais il pourrait y avoir une autre complication, car
cy.clock()
将clearInterval()
est placé dans le proxy afin que vous puissiez contrôler les fonctions chronométrées de l'application, vous ne pourrez donc peut-être pas la surveiller.Si vous constatez que cela ne fonctionne toujours pas correctement, veuillez obtenir la valeur de retour de
cy.clock()
et voir si des informations d'appel sont jointes.ou précisez que
clearInterval
ne doit pas être mandaté