cy.spy, das die Funktion window.clearInterval überwacht
P粉023326773
2023-08-17 12:16:34
<p>In einer Anwendung, die ich entwickle, verwende ich setInterval und clearInterval. Ich möchte die Methode „clearInterval“ überwachen, um zu sehen, ob sie aufgerufen wird. Folgendes mache ich eigentlich: </p>
<pre class="brush:php;toolbar:false;">beforeEach(() => {
cy.clock(neues Datum())
})
it('Testszenario' => {
const fn = cy.spy(document.defaultView, 'clearInterval')
//Auch versucht fn = cy.spy(window, 'clearInterval')
...
...
...
//Die Funktion „clearInterval“ wird beim Betreten des Abschnitts „then“ aufgerufen, aber der Stub meldet, dass sie noch nicht aufgerufen wurde
cy.tick(30000).then(() => {
erwarten(fn).to.have.been.calledOnce
})
})
afterEach(() => {
cy.clock().invoke('restore')
})</pre>
<p>Die Expect-Behauptung im obigen Snippet schlägt fehl, ich erwarte, dass sie erfolgreich ist. Ist meine Logik zur Initialisierung des Spions gültig/richtig? Für jede Hilfe bei dem oben genannten Problem sind wir sehr dankbar. </p>
Cypress在测试和应用程序中使用不同的
window
。cy.spy(window...
使用的是测试窗口,但要对应用程序窗口进行监视,您需要使用cy.window()
命令。但可能还会有另一个复杂性,因为
cy.clock()
将clearInterval()
放在代理中,以便可以控制应用程序的定时函数,所以您可能无法对其进行监视。如果发现仍然无法正常工作,请获取
cy.clock()
的返回值,并查看是否附有调用信息。或者指定
clearInterval
不应该被代理