cy.spy yang memantau fungsi window.clearInterval
P粉023326773
P粉023326773 2023-08-17 12:16:34
0
1
473
<p>Dalam aplikasi yang saya sedang bangunkan, saya menggunakan setInterval dan clearInterval. Saya mahu memantau kaedah clearInterval untuk melihat sama ada ia dipanggil. Inilah yang sebenarnya saya lakukan: </p> <pre class="brush:php;toolbar:false;">beforeEach(() ==> { cy.clock(Tarikh baharu()) }) it('Senario ujian' => { const fn = cy.spy(document.defaultView, 'clearInterval') //Juga mencuba fn = cy.spy(window, 'clearInterval') ... ... ... //Fungsi clearInterval dipanggil apabila memasuki bahagian `then`, tetapi stub melaporkan bahawa ia belum dipanggil lagi cy.tick(30000).then(() =>{ jangkakan(fn).untuk.telah.dipanggilSekali }) }) afterEach(() => { cy.clock().invoke('restore') })</pre> <p>Penegasan jangkaan dalam coretan di atas gagal, saya menjangka ia akan lulus. Adakah logik saya untuk memulakan pengintip itu sah|betul? Sebarang bantuan dengan isu di atas amat dihargai. </p>
P粉023326773
P粉023326773

membalas semua(1)
P粉745412116

Cypress menggunakan windowcy.spy(window...使用的是测试窗口,但要对应用程序窗口进行监视,您需要使用cy.window()perintah yang berbeza dalam ujian dan aplikasi.

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

... later

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

Tetapi mungkin terdapat komplikasi lain, kerana cy.clock()clearInterval() diletakkan dalam proksi supaya anda boleh mengawal fungsi masa aplikasi, jadi anda mungkin tidak dapat memantaunya.

Jika anda mendapati ia masih tidak berfungsi dengan baik, sila dapatkan nilai pulangan cy.clock() dan lihat jika terdapat maklumat panggilan yang dilampirkan.

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

atau nyatakan bahawa clearIntervaltidak boleh diproksikan

beforeEach(() => {
  cy.clock(new Date(), ['Date', 'setInterval'])  // 仅代理Date和setInterval
})
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan