監視window.clearInterval函數的cy.spy
P粉023326773
P粉023326773 2023-08-17 12:16:34
0
1
374

在我正在開發的應用程式中,我使用 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 的邏輯是否有效|正確?非常感謝對上述問題的任何幫助。

P粉023326773
P粉023326773

全部回覆 (1)
P粉745412116

Cypress在測試和應用程式中使用不同的windowcy.spy(window...使用的是測試窗口,但要對應用程式視窗進行監視,您需要使用cy.window()命令。

let spy; cy.window().then(appWindow => { spy = cy.spy(appWindow, 'clearInterval') }) ... later expect(spy).to.have.been.calledOnce

但可能會有另一個複雜性,因為cy.clock()clearInterval()放在代理程式中,以便可以控制應用程式的定時函數,所以您可能無法對其進行監視。

如果發現仍然無法正常運作,請取得cy.clock()的回傳值,並查看是否附有呼叫資訊。

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

或指定clearInterval不應該被代理

beforeEach(() => { cy.clock(new Date(), ['Date', 'setInterval']) // 仅代理Date和setInterval })
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!