mata utama
QUnit.asyncTest()
QUnit.asyncTest()
dan QUnit.start()
. QUnit.stop()
digunakan untuk memulakan atau menyambung semula ujian selepas ujian dihentikan, manakala QUnit.start()
meningkatkan bilangan QUnit.stop()
panggilan bahawa pelari ujian mesti menunggu sebelum meneruskan. QUnit.start()
QUnit.start()
dan QUnit.stop()
untuk menguji fungsi yang mengira nilai maksimum satu set parameter secara asynchronously. QUnit.asyncTest()
3
Setiap projek bukan remeh yang ditulis dalam JavaScript mengandungi fungsi tak segerak. Mereka digunakan untuk melakukan operasi yang diberikan selepas masa tertentu, mengambil data dari pelayan, dan juga menghantar data ke pelayan. QUnit menyediakan kaedah yang dipanggilyang bertujuan untuk menguji kod tak segerak. Tandatangan kaedah ini adalah seperti berikut: Parameter
mempunyai makna yang sama seperti, tetapi untuk kemudahan, saya melaporkannya di sini: QUnit.asyncTest()
name
: Rentetan yang membantu kita mengenal pasti ujian yang dibuat. testFunction
: Fungsi yang mengandungi pernyataan bahawa rangka kerja akan dilaksanakan. Rangka kerja ini melepasi parameter ke fungsi ini yang mendedahkan semua kaedah penegasan Qunit. boleh mengelirukan. Anda mungkin berfikir prinsipnya adalah sama, dan semua yang anda perlu lakukan untuk menguji fungsi tidak segerak adalah untuk menggantikan panggilan ke QUnit.test()
dengan QUnit.asyncTest()
dan ia dilakukan. Tidak begitu cepat! Untuk mencapai karyanya, QUnit.test()
perlu digunakan dalam kombinasi dengan dua kaedah lain: QUnit.asyncTest()
dan QUnit.start()
. Mari kita ketahui lebih lanjut mengenai mereka. QUnit.stop()
QUnit.start()
QUnit.stop()
, ia secara automatik menghentikan program ujian ujian. Ia kemudian akan menunggu panggilan fungsi yang mengandungi pernyataan QUnit.asyncTest()
. Tujuan QUnit.start()
adalah untuk memulakan atau meneruskan ujian berjalan selepas ujian dihentikan. Kaedah ini menerima integer sebagai satu -satunya parameter pilihan QUnit.start()
untuk menggabungkan pelbagai panggilan ke dalam satu
. QUnit.start()
. Ujian boleh dihentikan menggunakan kaedah QUnit.stop()
Ia meningkatkan bilangan panggilan bahawa pelari ujian mesti menunggu sebelum meneruskan. Kaedah ini menerima integer sebagai satu -satunya parameter pilihan yang menentukan bilangan panggilan tambahan kepada
QUnit.start()
bahawa rangka kerja mesti menunggu. Nilai lalai ialah 1. Agak sukar difahami, bukan? Definisi kaedah yang melibatkan kaedah yang sepadannya seperti kekacauan. Malangnya, itulah yang mereka lakukan. Cara terbaik yang saya tahu untuk menjelaskan konsep -konsep ini adalah untuk memberi anda contoh penggunaan tertentu. QUnit.start()
Dalam bahagian ini, kami akan meletakkan pendekatan yang dibincangkan setakat ini. Mudah -mudahan apabila anda membacanya, anda akan mendapat pemahaman yang lebih mendalam tentang mekanisme ini. Mari kita mulakan dengan contoh mudah menggunakan salah satu fungsi yang dibangunkan dalam artikel yang bermula dengan Qunit:
. Fungsi ini mengambil bilangan parameter dan mengembalikan nilai maksimum. Kod fungsi ini adalah seperti berikut:
max()
QUnit.asyncTest(name, testFunction)
. Kod yang digunakan untuk fungsi ujian asynchronous (ia harus membuat anda merasakan penggunaan max()
) adalah seperti berikut: window.setTimeout()
QUnit.asyncTest(name, testFunction)
Dalam kod di atas, saya telah membungkus panggilan ke fungsi max()
sebagai panggilan balik window.setTimeout()
. Selepas melaksanakan pernyataan dengan max()
, kami memanggil kaedah QUnit.start()
untuk membolehkan pelari ujian untuk meneruskan pelaksanaannya. Jika kita mengelakkan memanggil kaedah ini, pelari ujian akan terjebak dan ujian kami akan gagal dengan teruk (sebenarnya ujian itu dijeda dan tidak melakukan apa -apa lagi, jadi ia bukan kegagalan penegasan sebenar). Contoh sebelumnya harus mudah difahami, kerana ia sangat serupa dengan rakan sejawatnya yang segerak. Walau bagaimanapun, ujian untuk satu situasi sahaja tidak meyakinkan kami tentang kod kami. Di samping itu, kami tidak mempunyai peluang untuk melihat aplikasi praktikal QUnit.stop()
. Untuk menyelesaikan masalah ini, kami akan melaksanakan semua pernyataan yang kami lihat dalam jawatan terdahulu ke dalam fungsi yang diluluskan kepada QUnit.asyncTest()
. Kod lengkap kelihatan seperti ini:
function max() { var max = -Infinity; for (var i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }
Dalam ujian, kami menetapkan bilangan pernyataan yang kami harapkan untuk dijalankan, seperti yang dibincangkan dalam memulakan dengan Qunit. Fungsi itu kemudian memanggil kaedah QUnit.stop()
. Ini adalah perlu kerana dalam ujian kami melakukan empat panggilan tak segerak. Apabila kita menggunakan QUnit.asyncTest()
, rangka kerja hanya menunggu panggilan QUnit.start()
. Jika kita menghilangkan panggilan QUnit.stop()
dan menentukan tiga lagi panggilan kepada QUnit.start()
, ujian akan gagal kerana bilangan dakwaan yang dijangkakan adalah berbeza daripada bilangan pernyataan yang dilaksanakan. Demonstrasi langsung kod yang merangkumi panggilan ke expect()
ditunjukkan di bawah dan disediakan sebagai JSBIN.
ujian asynchronous menggunakan qunit
Dalam bahagian ini, kita telah melihat contoh kod asynchronous yang tidak melaksanakan operasi AJAX. Walau bagaimanapun, anda biasanya mahu memuatkan data dari atau menghantar data ke pelayan. Apabila ini berlaku, lebih baik tidak bergantung pada data atau hasil sebenar yang dikembalikan oleh pelayan, kerana ia mungkin mempunyai kesilapan (anda tahu, tiada apa -apa dalam perisian yang sempurna). Untuk mengelakkan masalah ini, anda harus mensimulasikan permintaan AJAX. Untuk melakukan ini, anda boleh menggunakan jQuery mockjax, sinon.js, atau mana -mana perpustakaan lain yang sesuai dengan keperluan anda.
Kesimpulan
Dalam tutorial ini, anda telah belajar bagaimana untuk membuat ujian untuk fungsi asynchronous. Pertama, kita membincangkan cara mengisytiharkan ujian yang melibatkan kod tak segerak menggunakan kaedah QUnit.asyncTest()
. Kemudian anda memahami kewujudan dua kaedah lain QUnit.start()
dan QUnit.stop()
, yang harus digunakan semasa membuat ujian menggunakan QUnit.asyncTest()
. Akhirnya, kami meletakkan pengetahuan yang diperolehi dalam amalan dengan membangunkan dua ujian untuk menunjukkan bagaimana kaedah ini berfungsi bersama -sama. Menggunakan topik yang diliputi dalam tutorial ini, anda mempunyai semua keupayaan yang anda perlukan untuk menguji sebarang kod yang mungkin anda tulis dalam JavaScript. Saya ingin tahu apa yang anda fikirkan rangka kerja ini dan sama ada anda akan mempertimbangkan menggunakannya dalam projek anda.
FAQs (FAQ) pada ujian kod asynchronous dengan qunit
Kod Async merujuk kepada operasi yang boleh dimulakan, dijalankan dan disiapkan dalam tempoh masa yang bertindih. Ini adalah cara pengaturcaraan yang membolehkan pelbagai perkara berlaku pada masa yang sama. Ini amat berguna dalam aplikasi yang memerlukan banyak operasi I/O atau memerlukan tugas seperti mendapatkan data dari pelayan. Menguji kod asynchronous adalah penting kerana ia membantu memastikan semua bahagian kod dilaksanakan dengan betul, walaupun mereka berjalan serentak. Ia membantu mengenal pasti sebarang masalah yang mungkin disebabkan oleh pelaksanaan pelaksanaan bahagian kod yang berlainan.
Qunit adalah rangka kerja ujian unit JavaScript yang kuat dan mudah digunakan. Ia dapat menguji mana -mana kod JavaScript biasa, termasuk kod asynchronous. QUnit menyediakan fungsi utiliti "async" yang menjadikan pengujian kod asynchronous mudah. Fungsi ini menjeda program ujian ujian dan mengembalikannya selepas kod tak segerak dilaksanakan. Ini memastikan bahawa ujian anda dengan tepat mencerminkan tingkah laku kod tak segerak.
Gunakan fungsi "Async" di Qunit dengan memanggilnya dalam fungsi ujian. Ini akan mengembalikan fungsi panggil balik, yang harus anda panggil selepas operasi tak segerak selesai. Berikut adalah contoh asas:
QUnit.asyncTest(name, testFunction)
Dalam contoh ini, fungsi "Async" digunakan untuk menjeda program ujian sehingga panggilan balik "selesai" dipanggil.
... (Soalan dan jawapan Soalan Lazim yang tersisa boleh ditulis semula sama dengan teks asal untuk memastikan kandungannya konsisten, tetapi struktur ayat dan penggunaan kata telah berubah untuk mengelakkan menyalin sepenuhnya.)
Atas ialah kandungan terperinci Cara Menguji Kod Asynchronous dengan QUnit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!