Hur man döljer JavaScripts console.log-utdata i Jest-tester
Jag arbetade idag i en kodbas som hade många avsiktliga console.log
utdata i alla miljöer utom produktion så de dök upp i Jests testutdata. Det skulle ha varit tråkigt att gå och ta bort dem en efter en och så jag utarbetade denna enkla installation för att undertrycka all console.log
utdata på en gång medan Jest körs.
Konfigurera Det finns
Det här tricket bygger på Jests inhemska förmåga att håna vad som helst. Vad vi i princip kommer att göra är att håna log
metoden för console
objektet och lämna de andra metoderna intakta.
Vi måste först berätta för Jest att köra en installationsfil innan testerna körs. För att göra detta redigerar vi jest.config.js
filen som vanligtvis ligger i roten för ditt projekt med andra konfigurationsegenskaper och lägger till följande rad:
setupFilesAfterEnv: ['/src/jest.setup.js']
Vi kan kolla i Jests dokumentation vad det setupFilesAfterEnv
gör:
En lista över sökvägar till moduler som kör någon kod för att konfigurera eller ställa in testramverket innan varje testfil i sviten körs.
Nu, när vi kör våra tester, kommer de först att utföra det jest.setup.js
som vi kommer att skapa nu.
Mocking console.log
Skapa en fil på src/setup.js
eller var du än pekade på din väg i föregående steg. Du lägger sedan till det här:
global.console = {
log: jest.fn(),
debug: console.debug,
trace: console.trace,
}
Detta åsidosätter log
metoden och tillåter de andra. Eftersom jag fortfarande ville ha möjlighet att utmata något i testerna, mappade jag debug
och trace
. Du kan mappa andra som du kan behöva så console.table
att element i en tabell återges, användbara för att logga objekt eller arrayer. För att vara ärlig, tills jag skrev detta, hade jag aldrig tittat på konsolobjektsidan i MDN och det finns många intressanta metoder som den console.dir
som visar en interaktiv lista över egenskaperna för det angivna JavaScript- objektet.
Avslutningsord
Nu console.log
är din utdata undertryckt medan dina Jest-test körs. Om du arbetar i ett team se till att du låter resten av teamet veta om denna förändring genom att dokumentera den eftersom någon kan bli stressad av att försöka göra console.log
något och inte ser det där det ska vara.