Отладка
TIP
При отладке тестов рекомендуется использовать аргумент CLI --test-timeout
, чтобы тесты не завершались по таймауту при остановке на точках останова.
VS Code
Для быстрой отладки тестов в VS Code используйте JavaScript Debug Terminal
. Откройте новый JavaScript Debug Terminal
и запустите npm run test
или vitest
. Это применимо к любому коду, запущенному в Node, и, соответственно, к большинству фреймворков тестирования JS.
Вы также можете добавить специальную конфигурацию запуска для отладки тестового файла в VS Code:
{
// Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Отладка текущего тестового файла",
"autoAttachChildProcesses": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
"args": ["run", "${relativeFile}"],
"smartStep": true,
"console": "integratedTerminal"
}
]
}
Затем на вкладке отладки убедитесь, что выбрана опция 'Отладка текущего тестового файла'. После этого вы можете открыть тестовый файл, который хотите отладить, и нажать F5, чтобы начать отладку.
Режим браузера
Для отладки режима браузера Vitest передайте --inspect
или --inspect-brk
в CLI или определите это в вашей конфигурации Vitest:
vitest --inspect-brk --browser --no-file-parallelism
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
inspectBrk: true,
fileParallelism: false,
browser: {
name: 'chromium',
provider: 'playwright',
},
},
});
По умолчанию Vitest будет использовать порт 9229
для отладки. Вы можете переопределить его, передав значение аргументу --inspect-brk
:
vitest --inspect-brk=127.0.0.1:3000 --browser --no-file-parallelism
Используйте следующую комбинированную конфигурацию VSCode для запуска Vitest и подключения отладчика к браузеру:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Запустить Vitest в браузере",
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
"console": "integratedTerminal",
"args": ["--inspect-brk", "--browser", "--no-file-parallelism"]
},
{
"type": "chrome",
"request": "attach",
"name": "Подключиться к Vitest в браузере",
"port": 9229
}
],
"compounds": [
{
"name": "Отладка Vitest в браузере",
"configurations": ["Подключиться к Vitest в браузере", "Запустить Vitest в браузере"],
"stopAll": true
}
]
}
IntelliJ IDEA
Создайте конфигурацию запуска для Vitest. Используйте следующие параметры для запуска всех тестов в режиме отладки:
Параметр | Значение |
---|---|
Рабочая директория | /path/to/your-project-root |
Затем запустите эту конфигурацию в режиме отладки. IDE будет останавливаться на точках останова в JS/TS коде, установленных в редакторе.
Node Inspector, например Chrome DevTools
Vitest также поддерживает отладку тестов без использования IDE. Однако для этого необходимо, чтобы тесты не запускались параллельно. Для запуска Vitest используйте одну из следующих команд:
# Для запуска в одном воркере
vitest --inspect-brk --pool threads --poolOptions.threads.singleThread
# Для запуска в одном дочернем процессе
vitest --inspect-brk --pool forks --poolOptions.forks.singleFork
# Для запуска в режиме браузера
vitest --inspect-brk --browser --no-file-parallelism
Если вы используете Vitest 1.1 или выше, вы также можете просто передать флаг --no-file-parallelism
:
# Если пул неизвестен
vitest --inspect-brk --no-file-parallelism
Как только Vitest запустится, он приостановит выполнение и будет ожидать, пока вы откроете инструменты разработчика, способные подключиться к инспектору Node.js. Для этого вы можете использовать Chrome DevTools, открыв chrome://inspect
в браузере.
В режиме наблюдения вы можете оставлять отладчик открытым во время повторных запусков тестов, используя опцию --poolOptions.threads.isolate false
.