監視window.clearInterval函數的cy.spy
P粉023326773
2023-08-17 12:16:34
<p>在我正在開發的應用程式中,我使用 setInterval 和 clearInterval。我想要監視 clearInterval 方法,以便查看是否呼叫了該方法。以下是我實際上在做的事情:</p>
<pre class="brush:php;toolbar:false;">beforeEach(() => {
cy.clock(new Date())
})
it('測試場景' => {
const fn = cy.spy(document.defaultView, 'clearInterval')
//也試過 fn = cy.spy(window, 'clearInterval')
…
…
…
//進入`then`部分時會呼叫 clearInterval 函數,但存根報告它尚未被調用
cy.tick(30000).then(() => {
expect(fn).to.have.been.calledOnce
})
})
afterEach(() => {
cy.clock().invoke('restore')
})</pre>
<p>上面程式碼段中的 expect 斷言失敗,我期望它通過。我初始化 spy 的邏輯是否有效|正確?非常感謝對上述問題的任何幫助。 </p>
Cypress在測試和應用程式中使用不同的
window
。cy.spy(window...
使用的是測試窗口,但要對應用程式視窗進行監視,您需要使用cy.window()
命令。但可能會有另一個複雜性,因為
cy.clock()
將clearInterval()
放在代理程式中,以便可以控制應用程式的定時函數,所以您可能無法對其進行監視。如果發現仍然無法正常運作,請取得
cy.clock()
的回傳值,並查看是否附有呼叫資訊。或指定
clearInterval
不應該被代理