Saya mengirimkan permintaan jaringan dalam sebuah test case, tetapi ini kadang-kadang membutuhkan waktu lebih dari 2 detik (batas waktu default).
Bagaimana cara menambah batas waktu untuk satu test case?
Ini dia: http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
Untuk fungsi panah gunakan sebagai berikut:
it('accesses the network', (done) => {
[Put network code here, with done() in the callback]
}).timeout(500);
before(function(done){this.timeout(5 * 1000);...});
.timeout(500)
pada akhirit(...).timeout(500)
Jika Anda ingin menggunakan fungsi panah ES6, Anda dapat menambahkan a
.timeout(ms)
ke akhirit
definisi Anda :Paling tidak ini bekerja di naskah.
sumber
.timeout
tidak termasuk dalam pengetikan DefinitelyTyped untuk mocha: i.imgur.com/jQbWCn1.png - Menggunakanthis.timeout(2000)
atauthis.slow(500)
dengan fungsi fungsi lama yang biasa berfungsi dan kompilasi tanpa kesalahanit
, tidak berhasildescribe
.describe()
ataucontext()
?.timeout
sekarang termasuk dalam Mocha typings DefinitelyTyped di:Mocha.IRunnable
. Namun, jika Anda menggunakan IDE Webstorm untuk menjalankan tes ini, sebuah peringatan: untuk alasan apa pun, plugin integrasi Mocha WebStorm masih tidak mengenali tes Mocha dengan.timeout()
menambahkan (artinya bahwa tidak ada tombol 'jalankan' muncul di sebelahnya), dan dengan demikian saya menganjurkan menghindari fungsi panah untuk memungkinkan penggunaanthis.timeout()
gantinya.(Karena saya mengalami ini hari ini)
Hati-hati saat menggunakan sintaks panah lemak ES2015:
Ini akan gagal:
EDIT: Mengapa gagal:
Seperti @atoth menyebutkan dalam komentar, fungsi panah gemuk tidak memiliki ikatan ini sendiri . Oleh karena itu, tidak mungkin untuk itu berfungsi untuk mengikat ini dari callback dan memberikan batas waktu fungsi.
Intinya : Jangan gunakan fungsi panah untuk fungsi yang membutuhkan batas waktu lebih lama.
sumber
this
pengikatan pada fungsi panah - tidak dengan cara yang sama akan menyarankan mereka memiliki semacam, hanya berbeda. Mereka hanya memiliki lingkup leksikal. Anda tidak dapat mengikat yang tidak ada ini. Itu sebabnya.bind
,,.call
dll. Tidak bekerja dengannya.this
itu.Jika Anda menggunakan di NodeJS maka Anda dapat mengatur batas waktu di package.json
maka Anda dapat menjalankan menggunakan npm seperti:
sumber
Dari baris perintah:
sumber
Anda mungkin juga berpikir tentang mengambil pendekatan yang berbeda, dan mengganti panggilan ke sumber daya jaringan dengan objek rintisan atau tiruan. Dengan menggunakan Sinon , Anda dapat memisahkan aplikasi dari layanan jaringan, memfokuskan upaya pengembangan Anda.
sumber
Untuk ujian navegation pada
Express
:Dalam contoh waktu pengujian adalah 4000 (4s).
Catatan:
setTimeout(done, 3500)
minor untuk daripadadone
yang disebut dalam waktu tes tetapiclearTimeout(timeOut)
ia menghindari daripada digunakan selama ini.sumber
Ini berhasil untuk saya! Tidak dapat menemukan apa pun untuk membuatnya bekerja sebelumnya ()
sumber