Debugging
TIP
Beim Debuggen von Tests empfiehlt es sich, das CLI-Argument --test-timeout
zu verwenden, um zu verhindern, dass Tests aufgrund von Haltepunkten eine Zeitüberschreitung verursachen.
VSCode
Eine schnelle Möglichkeit, Tests in VSCode zu debuggen, ist die Verwendung eines JavaScript Debug Terminal
. Öffne ein neues JavaScript Debug Terminal
und führe npm run test
oder direkt vitest
aus. Dies funktioniert mit jeglichem in Node ausgeführtem Code und somit auch mit den meisten JS-Test-Frameworks.
Alternativ kannst du eine dedizierte Startkonfiguration hinzufügen, um eine Testdatei in VSCode zu debuggen:
{
// Weitere Informationen findest du unter: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Current Test File",
"autoAttachChildProcesses": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
"args": ["run", "${relativeFile}"],
"smartStep": true,
"console": "integratedTerminal"
}
]
}
Wähle dann im Debug-Tab 'Debug Current Test File' aus. Öffne die Testdatei, die du debuggen möchtest, und drücke F5, um das Debuggen zu starten.
IntelliJ IDEA
Erstelle eine Ausführungskonfiguration vom Typ 'Node.js'. Verwende die folgenden Einstellungen, um alle Tests im Debugging-Modus auszuführen:
Einstellung | Wert |
---|---|
Arbeitsverzeichnis (Working directory) | /path/to/your-project-root |
JavaScript-Datei (JavaScript file) | ./node_modules/vitest/vitest.mjs |
Anwendungsparameter (Application parameters) | run --threads false |
Führe diese Konfiguration anschließend im Debugging-Modus aus. Die IDE hält an den im Editor gesetzten JS/TS-Haltepunkten an.
Node Inspector, z.B. Chrome DevTools
Vitest unterstützt auch das Debuggen von Tests ohne IDE. Hierfür ist es jedoch erforderlich, dass die Tests nicht parallel ausgeführt werden. Verwende einen der folgenden Befehle, um Vitest zu starten.
# Um in einem einzelnen Worker auszuführen
vitest --inspect-brk --single-thread
# Um in einem Kindprozess auszuführen
vitest --inspect-brk --single-thread --no-threads
Sobald Vitest gestartet ist, pausiert die Ausführung und wartet darauf, dass du die Entwicklertools öffnest, die sich mit dem NodeJS-Inspektor verbinden können. Du kannst Chrome DevTools dafür verwenden, indem du chrome://inspect
im Browser öffnest.
Im Watch-Modus kannst du den Debugger während der Testneuausführungen geöffnet lassen, indem du die Optionen --single-thread --isolate false
verwendest.