Comment deboguer le projet sous vscode
Suivre les instructions de la doc de vscode : https://code.visualstudio.com/Docs/editor/debugging
Le fichier ̀.vscode/launch.json est un peu différent dans notre cas :
{
// Use IntelliSense to learn about possible Node.js debug attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Program",
"type": "node",
"request": "launch",
"program": "${file}",
"sourceMaps": true,
"outFiles": [
"${workspaceRoot}/build/**/*.js"
],
"cwd": "${workspaceRoot}"
}
}
Débogage dans vscode
Cette configuration permet de deboguer un script .ts.
Pour ne pas avoir à recompiler avant chaque debogage, on peut configurer une tâche à exécuter avant à l'aide de l'attribut preLaunchTask.
Il faut définir la tâche correspondant dans le fichier .vscode/tasks.json :
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "buildspec",
"type": "npm",
"script": "buildspec",
"problemMatcher": []
}
]
}
L'important est de définir l'attribut label qui doit correspondre au nom fourni à l'attribut preLaunchTask du fichier .vscode/launch.json.
Jasmine
Je n'ai pas réussi à déboguer le code exécuté par jasmine. J'arrive à créer un profil de débogage dans .vscode/launch.json qui exécute jasmine et les tests mais les points d'arrêt ne fonctionnent pas :
{
"name": "Jasmine Debugging",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/node_modules/.bin/jasmine",
"request": "launch",
"type": "node"
}
J'exécute donc un script tel que jalhyd/spec/structure/test_structure_cem88d.ts. C'est presque une copie conforme du test jasmine jalhyd/spec/structure/structure_cem88d.spec.ts sur lequel je fais référence au fichier jalhyd/spec/mock_jasmine.ts qui mime les fonctions describe et it. Pour les fonctions expect et toBeCloseTo, j'ai un problème à l'utilisation des fonctions chainées avec une exécution en mode "use strict"; qui fait que this est undefined dans la fonction expect et je n'arrive pas à contourner la difficulté.