cy.spy qui surveille la fonction window.clearInterval
P粉023326773
P粉023326773 2023-08-17 12:16:34
0
1
459
<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>
P粉023326773
P粉023326773

répondre à tous(1)
P粉745412116

Cypress utilise différentes windowcy.spy(window...使用的是测试窗口,但要对应用程序窗口进行监视,您需要使用cy.window()commandes dans les tests et les applications.

let spy;
cy.window().then(appWindow => {
  spy = cy.spy(appWindow, 'clearInterval')
})

... later

expect(spy).to.have.been.calledOnce

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.

let clock;
beforeEach(() => {
  clock = cy.clock(new Date())
})

ou précisez que clearIntervalne doit pas être mandaté

beforeEach(() => {
  cy.clock(new Date(), ['Date', 'setInterval'])  // 仅代理Date和setInterval
})
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal