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é.