在我正在開發的應用程式中,我使用 setInterval 和 clearInterval。我想要監視 clearInterval 方法,以便查看是否呼叫了該方法。以下是我實際上在做的事情:
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') })
上面程式碼段中的 expect 斷言失敗,我期望它通過。我初始化 spy 的邏輯是否有效|正確?非常感謝對上述問題的任何幫助。
Cypress在測試和應用程式中使用不同的
window
。cy.spy(window...
使用的是測試窗口,但要對應用程式視窗進行監視,您需要使用cy.window()
命令。但可能會有另一個複雜性,因為
cy.clock()
將clearInterval()
放在代理程式中,以便可以控制應用程式的定時函數,所以您可能無法對其進行監視。如果發現仍然無法正常運作,請取得
cy.clock()
的回傳值,並查看是否附有呼叫資訊。或指定
clearInterval
不應該被代理