Bagaimana saya bisa membuat tes ini lulus tanpa menggunakan blok run / waitsFor?
it("cannot change timeout", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
expect(body).toEqual("hello world");
done();
});
});
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
nilai melakukan trik bagi saya pada penyiapan baru yang dibuat dari awal menggunakan Jasmine + Jest. Ini bekerja seperti yang diharapkan.it
. Pada saat Anda sedang dalam ujian,done
sepertinya sudah terpikat pada apa punDEFAULT_TIMEOUT_INTERVAL
yang sebelumnyait
dimulai.Mengirim pull request untuk fitur ini ( https://github.com/mhevery/jasmine-node/pull/142 )
it("cannot change timeout", function(done) { request("http://localhost:3000/hello", function(error, response, body){ expect(body).toEqual("hello world"); done(); }); }, 5000); // set timeout to 5 seconds
sumber
Untuk menyetel waktu tunggu Jasmine-Node global, lakukan ini:
jasmine.getEnv().defaultTimeoutInterval = timeoutYouWouldPrefer;// e.g. 15000 milliseconds
Penghargaan untuk pengembang Gabe Hicks untuk mengetahui bagian .getEnv () melalui debugging meskipun terdapat informasi yang salah dalam dokumen README yang mengklaim bahwa hal itu dilakukan dengan menyetel jasmine.DEFAULT_TIMEOUT_INTERVAL.
Jika Anda ingin menyetel waktu tunggu khusus hanya untuk satu it (), Anda dapat mencoba meneruskan batas waktu (milidetik) sebagai argumen ketiga (setelah pernyataan string dan fungsinya). Ada contoh yang dilakukan di sini , tetapi saya tidak yakin apa yang akan terjadi jika batas waktu khusus lebih lama daripada default Jasmine. Saya berharap itu akan gagal.
sumber
jasmine.DEFAULT_TIMEOUT_INTERVAL = 12000;
file konfigurasi global yang saya gunakan untuk semua pengujian dan berfungsi seperti yang diharapkan.Sepertinya Anda sekarang dapat menambahkannya sebagai argumen terakhir untuk
it
fungsi tersebut:describe('my test', function(){ it('works', function(done){ somethingAsync().then(done); }, 10000); // changes to 10 seconds });
sumber
Di Angular, letakkan ini di luar blok deskripsi Anda:
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Ini berlaku untuk semua pengujian dalam file .spec.ts
sumber
Letakkan setelah
describe
pernyataan:describe("A saves to DB", function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
sumber
Menambahkan:
jasmine.DEFAULT_TIMEOUT_INTERVAL = yourTime;
pada file pembantu bekerja untuk saya.sumber
Mengapa tidak dengan memata-matai
setTimeout()
?Sesuatu seperti:
var spy = spyOn(window, 'setTimeout').andCallFake(function (func, timeout) { expect(timeout).toEqual(2500); func(); }); setTimeOut(function () { ... }, 2500); expect(spy).toHaveBeenCalled();
sumber
Dalam kasus saya, saya memiliki beberapa kasus pengujian dan ketika saya menggunakan solusi yang disebutkan di atas dengan menggunakan:
beforeEach(function() { originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; });
DEFAULT_TIMEOUT_INTERVAL tidak diperbarui pada kasus uji pertama, jadi saya harus menambahkan ini:
beforeAll(() => { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; })
ke kode saya agar berhasil menjalankan semua tes.
sumber
Ubah j $ .DEFAULT_TIMEOUT_INTERVAL menjadi 10000 di file berikut: npm \ node_modules \ jasmine-core \ lib \ jasmine-core
sumber