javascript - jest.setTimeout virker ikke i setupFiles
Jeg bruger Jest til at teste mit REST-API. De fleste af mine API-endpoints tager mere end 5 sekunder at returnere, så jeg er nødt til at øge standardtimeouten på 5000 ms, der er angivet i Jest.
Jeg har 2 testfiler, for eksempel: foo.test.js bar.test.js
Nu kan jeg slippe af med timeout-fejlen ved at følge 2 måder:
- Indstilling af timeout-værdier større end 5000 som det 3. argument til
testelleritmetoderne. Dette fungerer fint, men jeg har brug for at opdatere alle mine eksisterende testtilfælde. - At tilføje
jest.setTimeout(20000);øverst i hver af mine testfiler. Dette fungerer også fint. Men det kræver stadig, at jeg opdaterer alle mine eksisterende testfiler.
Jeg fandt ud af, at jeg i stedet kan angive jest.setTimeout(20000); i en separat fil og pege på den i setupFiles-konfigurationsmuligheden for jest i package.json. Jeg gjorde dette, men timeout-fejlen, hvor 5000ms blev overskredet, begyndte at dukke op igen. Min setup-fil bliver indlæst korrekt, hvilket jeg tjekkede ved at tilføje nogle console.log-udsagn til denne. Men det ser ud til, at jest.setTimeout(20000) ikke har nogen effekt på testcases.
Svar #1
Fra dokumentationen for setupFilesAfterEnv:
setupFileskører, før testframeworket er installeret i miljøet
(Den information burde sandsynligvis også tilføjes til setupFiles-sektionen i dokumentationen.)
setupFiles kører før testframeworket er installeret. Jeg er lidt overrasket over, at jest.setTimeout er defineret inden for en opsætningsfil. Under alle omstændigheder virker det ikke at kalde jest.setTimeout direkte fra en fil i setupFiles.
Brug i stedet setupFilesAfterEnv, som kører
straks efter at testframeworket er blevet installeret i miljøet
Bemærk, at setupFilesAfterEnv blev introduceret i version 24.0.0.
Hvis du bruger en tidligere version af Jest, skal du bruge den ældre setupTestFrameworkScriptFile i stedet.