Отладка тестов Jest для проекта Lerna в VS Code

Я хочу отладить определенные тесты Jest в коде VS для проекта, использующего Lerna, поэтому есть несколько папок, каждая из которых имеет свою собственную папку node_modules. С помощью этого ответа у меня есть следующий файл launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest watch",
      "program": "${workspaceRoot}/my/specific/module/node_modules/jest/bin/jest.js",
      "args": ["--verbose", "-i", "--no-cache", "--watchAll"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceFolder}/my/specific/module"
    }
  ]
}

Проблема в том, что мне пришлось указать конкретный путь к модулю в конфигурации запуска, поэтому мне приходится менять его каждый раз, когда я хочу отлаживать что-то еще.

Есть лучший способ сделать это? Может быть, использовать папку, которая выбрана в проводнике? Может быть, есть способ запустить отладку, щелкнув правой кнопкой мыши тестовый файл?


person Nick Wilson    schedule 02.03.2020    source источник


Ответы (2)


Большое спасибо dlac за идею, теперь у меня есть рабочая конфигурация запуска:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest watch",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": ["--verbose", "-i", "--no-cache", "--watchAll"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest"
      },
      "cwd": "${fileDirname}"
    }
  ]
}
person Nick Wilson    schedule 02.03.2020

Lerna позволяет вам иметь пакеты npm в корневом каталоге node_modules, которые поднимаются к вашим пакетам. Тем не менее, если у вас есть jest в качестве зависимости в корневом package.json файле, вы сможете запускать тесты в каждом пакете.

У меня настроен launch.json, как показано ниже. Первый конфиг запускает все тесты, а второй запускает тот тест, который в данный момент открыт в VS Code.

  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest All",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": [
        "--runInBand", "--watchAll"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "disableOptimisticBPs": true,
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Jest Current File",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": [
        "${relativeFile}","--watchAll"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "disableOptimisticBPs": true,
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    }
  ]
person dlac    schedule 02.03.2020
comment
Тот конфиг работает, но у нас большое количество модулей и тестов. С этой конфигурацией, вносящей небольшое изменение в тест, меня интересуют результаты в каждом тесте для каждого запускаемого модуля. Я надеялся, что мне будет проще ориентироваться на определенные тесты или модули. - person Nick Wilson; 02.03.2020
comment
Я отредактировал ответ, чтобы добавить вторую конфигурацию, которая будет запускать только тот тест, который в данный момент открыт в VS Code. Чтобы запустить более одного теста одновременно, вам, вероятно, потребуется использовать терминал и передать выражение, соответствующее тестам, которые вы хотите запустить. - person dlac; 02.03.2020
comment
Близко, но это, кажется, не совсем работает. есть большая задержка при запуске, не совсем понимаю почему, затем я получаю сообщение об обнаружении 0 тестов. Идея относительного файла указала мне правильное направление, я думаю, что теперь у меня есть что-то, что работает, спасибо. - person Nick Wilson; 02.03.2020