Ujian gagal kerana tiada pernyataan waitFor diletakkan sebelum findBy dalam Pustaka Pengujian React
P粉174151913
P粉174151913 2023-09-09 12:02:38
0
1
430

rreeee

Saya menulis ujian di mana pengguna mengklik butang. Butang menghantar permintaan rangkaian, dan jika 200 dikembalikan, pemasa dipaparkan dan mula mengira dalam beberapa saat. Saya menggunakan MSW untuk mengembalikan respons olok-olok. Memandangkan permintaan rangkaian jelas tidak segerak, saya mencari pemasa ini dengan menunggu screen.findByRole dipanggil. Masalah yang saya hadapi ialah ujian hanya lulus apabila userEvent.click(startTimerButton)和调用await screen.findByRole('cell', {name: /00:00/i})之间调用await waitFor(() => {}) dipanggil. Nampaknya ujian ini hanya lulus jika saya membiarkannya tidur seketika sebelum mencari pemasa. Saya tidak faham mengapa saya tidak dapat memulakan pemasa carian dengan segera.

Tanpa kenyataan waitFor, mesej ralat yang saya dapat ialah:

Ralat: Balingan: "Tamat masa ujian melebihi 5000 ms. Jika ini adalah ujian yang berjalan lama, gunakan jest.setTimeout(newTimeout) untuk meningkatkan nilai tamat masa. " var evt = document.createEvent('event'); TypeError: Tidak boleh membaca sifat 'createEvent' null

Ada sesiapa tahu sebabnya? Saya harap saya tidak perlu mengelilinginya seperti yang saya lakukan sekarang.

Saya juga cuba menukar findBy await saya kepada getBy yang dibungkus dalam pernyataan waitFor, tetapi itu juga tidak berjaya. Nampaknya saya hanya perlu membiarkannya tidur seketika dan kemudian mula mencari.

P粉174151913
P粉174151913

membalas semua(1)
P粉248602298

Apa yang anda tiada dalam baris iniawait:

userEvent.click(startTimerButton);

Jadi cubalah:

await userEvent.click(startTimerButton);

Setakat versi 14, userEvent API adalah tak segerak.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan