Skip to content
On this page

NodeJS Jest VS Code Debugging

Title
NodeJS Jest VS Code Debugging
Category
Troubleshooting
Tags
Aliases
NodeJS Jest VS Code Debugging
Created
3 years ago
Updated
last year

문제 상황

nodejs-jest-vscode-debugging-image-0

알고리즘 폴더 내부의 solution.js 파일에 중단점를 걸고 환경을 Node.js로 설정하면 디버깅이 될거라 기대했는데 아무 일도 일어나지 않았다.

nodejs-jest-vscode-debugging-image-1

디버그 콘솔을 보니 node로 solution.js 를 실행하는데, solution 함수를 호출하는 코드가 없기 때문에, 선언만 하고 끝난 듯 했다.

그러면 solution.test.js 에서 solution 함수를 호출하니, solution.test.js 파일에 중단점을 걸어보기로 했다.

nodejs-jest-vscode-debugging-image-2

test 파일에 중단점을 걸었더니 describe 함수를 찾지 못했다.

nodejs-jest-vscode-debugging-image-3

ReferenceError: describe is not defined NodeJs

Debug single javascript file in "Visual Studio Code"

stackoverflow를 찾아보니 테스트 코드를 실행시킬 때 node 대신 mocha 로 실행해야한다고 한다. 현재 jest를 쓰고 있는데 jest도 마찬가지일 듯 싶었다.

그럼 어떻게 vscode의 디버그 모드를 jest로 실행시키는지 궁금했다. stackoverflow의다른 답변도 더 찾아본 결과 .vscode/launch.json 을 설정해서 해결하는 것 같았다.

nodejs-jest-vscode-debugging-image-4

launch.jsonprogram 에 실행할 jest 를 넣고 argstest 파일 또는 test 파일이 있는 디렉토리를 넘겨주면 된다.

nodejs-jest-vscode-debugging-image-5

launch.json 만들기

javascript
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "jest 디버그",
            "skipFiles": ["<node_internals>/**"],
            "program": "${workspaceFolder}/node_modules/jest/bin/jest.js",
            "args": ["${relativeFileDirname}"]
        }
    ]
}
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "jest 디버그",
            "skipFiles": ["<node_internals>/**"],
            "program": "${workspaceFolder}/node_modules/jest/bin/jest.js",
            "args": ["${relativeFileDirname}"]
        }
    ]
}

VS Code 변수( ${relativeFileDirname} ) 로 현재 열려있는 파일이 있는 디렉토리를가져올 수 있다. 이걸 args 로 넘기면 jest ./foo/bar/directory 가 완성된다.

nodejs-jest-vscode-debugging-image-6

이제 열려있는 solution.js 에서 중단점을 잡고 F5 키를 누르면 solution.js 파일이 있는 디렉토리를 jest 로 디버그 모드로 실행한다. solution.jssolution.test.js 파일이 같은 디렉토리에 있기 때문에 test 코드가 디버그 모드로 실행되고, 테스트 코드의 인풋으로 solution 함수를 호출할 수 있다.

nodejs-jest-vscode-debugging-image-7

디버그 콘솔을 보니 nodejest 를 실행하고, args 로 현재 파일이 있는 디렉토리를 넘긴다.

참고자료

Troubleshooting · Jest

Visual Studio Code Variables Reference

Debugging in Visual Studio Code

Released under the MIT License.