javascript - jest.setTimeout setupFiles içinde çalışmıyor


REST API'mi test etmek için Jest kullanıyorum. API uç noktalarımın çoğu yanıt vermesi 5 saniyeden uzun sürdüğü için, Jest'te belirtilen varsayılan 5000ms zaman aşımını artırmam gerekiyor.

2 test dosyam var, örneğin: foo.test.js bar.test.js

Şimdi, zaman aşımı hatasından 2 şekilde kurtulabilirim:

  1. Zaman aşımı değerlerini 5000'den büyük olarak ayarlamak, test veya it yöntemlerine 3. argüman olarak geçmek. Bu sorunsuz çalışıyor, ama mevcut tüm test vakalarımı güncellemem gerekiyor.
  2. Her test dosyamın en üstüne jest.setTimeout(20000); eklemek. Bu da gayet iyi çalışıyor. Ama yine de, tüm mevcut test dosyalarımı güncellememi gerektiriyor.

Bunun yerine ayrı bir dosyada jest.setTimeout(20000); belirtebileceğimi ve bunu package.json'daki setupFiles yapılandırma seçeneğinde jest'e işaret edebileceğimi öğrendim. Bunu yaptım ama 5000ms'i aşma zaman aşımı hatası yeniden ortaya çıkmaya başladı. setupFile'ım doğru şekilde yükleniyor, bunu bazı console.log ifadeleri ekleyerek kontrol ettim. Ama görünüşe göre jest.setTimeout(20000) test durumları üzerinde herhangi bir etkisi olmuyor.

Cevap #1

Dokümanlardan setupFilesAfterEnv için:

setupFiles, ortamda test framework'ü kurulmadan önce çalıştırılır

(Bu bilginin muhtemelen dokümanlardaki setupFiles bölümüne de eklenmesi gerekir.)

setupFiles, test çerçevesi kurulmadan önce çalışır. jest.setTimeout'in bir kurulum dosyasında tanımlanmış olmasına biraz şaşırdım. Her durumda, setupFiles içindeki bir dosyadan doğrudan jest.setTimeout çağırmak işe yaramaz.

Bunun yerine, çalıştıran setupFilesAfterEnv öğesini kullanın

test çerçevesi ortamda kurulduktan hemen sonra

Şunu unutmayın ki setupFilesAfterEnv, 24.0.0 sürümünde tanıtıldı.

Eğer daha eski bir Jest sürümü kullanıyorsanız, bunun yerine eski setupTestFrameworkScriptFile özelliğini kullanın.