Hallo, ich möchte Karma-Tests in vs Code debuggen, aber ich habe keinen Weg gefunden. Gibt es eine Möglichkeit, dies zu tun, oder muss ich eine andere IDE (WebStorm) verwenden?
Versuchen
{
"name": "jasmine",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/jasmine/bin/jasmine.js",
"stopOnEntry": false,
"args": [
"JASMINE_CONFIG_PATH=${workspaceRoot}/spec/support/jasmine.json"
],
"cwd": "${workspaceRoot}",
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
}
}
Sie können Karma debuggen, indem Sie den Debugger an eine Chrome-Instanz anhängen. Sie möchten Ihre launch.json
config so einstellen:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "attach",
"name": "Attach Karma Chrome",
"address": "localhost",
"port": 9333,
"pathMapping": {
"/": "${workspaceRoot}/",
"/base/": "${workspaceRoot}/"
}
}
]
}
Sie müssen jedoch auch Ihren karma.conf.js config
anpassen, sodass die Chrome-Instanz mit dev-Tools gestartet wird, die den 9333
-Port abhören.
browsers: [
'ChromeDebugging'
],
customLaunchers: {
ChromeDebugging: {
base: 'Chrome',
flags: [ '--remote-debugging-port=9333' ]
}
},
Mit einem solchen Setup können Sie einfach Ihren Karma-Server (mit dem erfassten Browser) ausführen und dann das Debuggen in Visual Studio beginnen.
Wenn Sie mehr Details erfahren möchten, habe ich ein Tutorial zum Debugging von Karma mit Visual Studio Code gemacht.
Verwenden von Angular CLI 1.7.4: Mit den folgenden Schritten konnte ich eine Hallo World Angular-Anwendung mit Visual Studio Code debuggen:
Generieren Sie ein neues HelloWorld-Projekt:
ng new HelloWorld
Öffnen Sie das Projekt in Visual Studio Code
code HelloWorld
Erstellen Sie eine neue Debug-Konfiguration:
Eine .vscode/launch.json
-Datei wird generiert und geöffnet. Ersetzen Sie den Inhalt durch Folgendes:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Karma Tests",
"sourceMaps": true,
"webRoot": "${workspaceRoot}",
"url": "http://localhost:9876/debug.html",
// "runtimeArgs": [
// "--headless"
// ],
"pathMapping": {
"/": "${workspaceRoot}",
"/base/": "${workspaceRoot}/"
},
"sourceMapPathOverrides": {
"webpack:///./*": "${webRoot}/*",
"webpack:///src/*": "${webRoot}/*",
"webpack:///*": "*",
"webpack:///./~/*": "${webRoot}/node_modules/*",
"meteor://????app/*": "${webRoot}/*"
}
}
]
}
Öffnen Sie karma.conf.js
und führen Sie die folgende Änderung durch:
Öffne ein Terminal und starte Karma-Tests:
ng test
Öffne app.component.spec.ts
und setze einen Haltepunkt:
Wählen Sie im Debug-Menü "Karma-Tests" aus:
Drücken Sie F5
, um mit dem Debuggen zu beginnen. VSCode sollte am Haltepunkt anhalten:
Hier ist eine einfachere Konfiguration (in launch.json
):
{
"type": "chrome",
"request": "launch",
"name": "Test",
"sourceMaps": true,
"webRoot": "${workspaceRoot}/Test",
"url": "http://localhost:9876/debug.html",
"runtimeArgs": [
"--headless"
]
}
Wichtig:
webRoot
in den Ordner, von dem aus Karma Ihre Tests bereitstellt.url
entsprechend.Diese Konfiguration ist aus mehreren Gründen einfacher:
singleRun: false
haben. Sie können sogar browsers: []
einstellen, da VS Code einen eigenen Browser startet (im Headless-Modus, damit Sie ihn nicht sehen können).preLaunchTask
hinzufügen, das Karma automatisch startet. Sie müssen es als Hintergrundaufgabe konfigurieren.Für alle, die hier nach angular Debugging-Karma-Tests suchen - siehe vscode-Rezept von Microsoft.
Ich folgte @Awsed ausgezeichneter Erklärung [Danke!] Und konnte mit ein paar bemerkenswerten Vorschlägen die Dinge zum Laufen bringen:
In VSCode scheint ein Fehler aufgetreten zu sein, der Probleme hat, die Haltepunktzeilen in Spezifikationsdateien zu verfolgen. Ich habe meinen Haltepunkt auch nach dem korrekten Setup nicht erreicht, da VSCode verwirrt zu sein scheint, in welcher Zeile sich der Haltepunkt befindet, insbesondere wenn Sie Code ändern. Ich konnte keine Abhilfe dafür finden (auch nach zwei Neustarts und mehrmaligem Neustart von VSCode). Ich konnte das nur entdecken, indem ich zu einer Testdatei ging, die seit einiger Zeit nicht mehr geändert wurde und einen Haltepunkt erfolgreich erreichen konnte. Dann habe ich den Haltepunkt an verschiedene Stellen auf der Seite der Datei verschoben, mit der ich Probleme hatte, und konnte einen Ort finden, an dem er (endlich) den Haltepunkt erreichen würde.
Außerdem empfehle ich nicht, Chrome headless auszuführen, da die Schaltfläche "Stop" den Prozess nicht beendet und Sie ihn nicht im Task-Manager finden können, da er kopflos ist. Sie müssen stattdessen einen Befehl verwenden, um ihn zu beenden (zB https://superuser.com/questions/1288388/how-can-i-kill-all-headless-chrome-instances-von-the-command-line-on-windows ); Wenn Sie dies nicht tun, können Sie es nicht erneut ausführen.