Jika kita memiliki file tes unit my-spec.js dan berjalan dengan mocha:
mocha my-spec.js
Batas waktu default adalah 2000 ms. Itu dapat ditimpa untuk pengujian parsial dengan parameter baris perintah:
mocha my-spec.js --timeout 5000
Apakah mungkin untuk mengubah batas waktu default secara global untuk semua tes? yaitu nilai batas waktu default akan berbeda dari 2000 ms ketika Anda menelepon:
mocha my-spec.js
Jawaban:
Secara default Mocha akan membaca file bernama
test/mocha.opts
yang dapat berisi argumen baris perintah. Jadi Anda bisa membuat file seperti itu yang berisi:Setiap kali Anda menjalankan Mocha di baris perintah, itu akan membaca file ini dan menetapkan batas waktu 5 detik secara default.
Cara lain yang mungkin lebih baik tergantung pada situasi Anda adalah dengan mengaturnya seperti ini di
describe
panggilan tingkat atas dalam file pengujian Anda:Ini akan memungkinkan Anda untuk mengatur batas waktu hanya berdasarkan per file.
Anda dapat menggunakan kedua metode ini jika Anda menginginkan standar global 5000 tetapi mengatur sesuatu yang berbeda untuk beberapa file.
Perhatikan bahwa Anda biasanya tidak dapat menggunakan fungsi panah jika Anda akan memanggil
this.timeout
(atau mengakses anggota lain darithis
Mocha yang ditetapkan untuk Anda). Misalnya, ini biasanya tidak akan berhasil :Ini karena fungsi panah mengambil
this
dari lingkup fungsi muncul. Mocha akan memanggil fungsi dengan nilai yang baik untukthis
tetapi nilai itu tidak diteruskan di dalam fungsi panah. Dokumentasi untuk Mocha mengatakan tentang topik ini :sumber
/home/me/src/proj/
maka Mocha akan mencari file ini:/home/me/src/proj/test/mocha.opts
this
, yang biasanya menghasilkanthis.timeout
kegagalan seperti yang Anda tunjukkan dalam komentar Anda.Cukup tambahkan ke jawaban yang benar Anda dapat mengatur batas waktu dengan fungsi panah seperti ini:
sumber
describe('suite', () => {...}).timeout(5000)
tidak bekerjasetTimeout
instruksi eksplisit di dalam tes.Menambahkan ini untuk kelengkapan. Jika Anda (seperti saya) menggunakan skrip di
package.json
file Anda , cukup tambahkan--timeout
opsi ke mocha:Kemudian Anda dapat berlari
npm run test
untuk menjalankan suite tes Anda dengan batas waktu yang ditetapkan menjadi 10.000 milidetik.sumber
Dalam versi Mocha saat ini, batas waktu dapat diubah secara global seperti ini:
Tambahkan saja baris di atas di mana saja di dalam test suite Anda, lebih disukai di bagian atas spec Anda atau dalam helper tes yang terpisah.
Dalam versi yang lebih lama, dan hanya di browser, Anda dapat mengubah konfigurasi global menggunakan
mocha.setup
.The dokumentasi tidak mencakup pengaturan batas waktu global, tetapi menawarkan beberapa contoh tentang cara mengubah timeout dalam skenario umum lainnya.
sumber
timeout
parameter apa pun . Sebaliknya, mochajs.org/#timeouts memberi tahu untuk memasukkansetTimeout
instruksi eksplisit di dalam tes.