2017-03-25 11 views
5

Piszę bibliotekę Maszynopisów. Testy jednostkowe są również napisane w Maszynopisie przy użyciu szkieletu Mocha. Chciałbym wykonać testy jednostkowe bezpośrednio, bez kompilacji w javascript. To działa z tym poleceniem:Jak debugować testy jednostkowe napisane w Maszynopisie za pomocą Mocha z Visual Studio Kod

./node_modules/mocha/bin/mocha ./test/*.test.ts --require ts-node/register 

próbuję debugować badanej jednostki Visual Kodeksu Studio z następującymi ustawieniami nośnych:

{ 
    "type": "node", 
    "request": "launch", 
    "name": "Mocha Tests", 
    "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha", 
    "args": [ 
     "--require", 
     "ts-node/register", 
     "${workspaceRoot}/test/*.test.ts" 
    ], 
    "internalConsoleOptions": "openOnSessionStart" 
} 

ten sposób można debugować sam Mocha z Kodeksem VS, ale nie testy jednostkowe. Mocha tworzy osobne procesy dla testów, a debugger nie może automatycznie dołączyć do procesów potomnych.

Jaki jest właściwy sposób debugowania testów jednostkowych z kodu Visual Studio?

Odpowiedz

0

tl; dr: użyj Nodejs debugger command


Znalazłem roztwór/obejście dla mojego problemu, choć nie jestem w 100% zadowolony z niego.

Po przełączeniu --require ts-node/register na Mocha w zasadzie wprowadzamy bibliotekę ts-node/register.js do naszego środowiska testowego. Ta biblioteka zawija wymaga wywołań, a po załadowaniu pliku .ts kompiluje kod maszynopisu na żądanie.

Aby sprawdzić, jak działa ts-node/register, napisałem prosty przykład Nodejsa bez Mocha. W przykładzie znajduje się plik debug_test.js i plik debug_test.ts. Uruchamiam debug_test.js i ładuję debug_test.ts.

Przykład rozpoczynam od prostej konfiguracji "Node.js: Launch Program" z Vissual Studio Code.

enter image description here

Kiedy umieścić punkt przerwania do debug_test.ts:2 problem jest taki sam do mojego pierwotnego problemu - nie złamać.

enter image description here

Ale, jeśli mogę użyć polecenia Nodejs debugger rozkłada i można debugować mojej aplikacji.

Po umieszczeniu punktu przerwania na komendzie debugger, kod Visual Studio rozpoznaje stos wywołań, konsola debugowania jest użyteczna, chociaż nie widzę zmiennych lokalnych w interfejsie użytkownika.

enter image description here

Wydaje się być błąd lub ulepszenie kodu VS możliwość, ale teraz to rozwiązanie działa z Mocha z mojej oryginalnej konfiguracji uruchomi też.

2

Jeśli ktoś uzna za przydatne, następujący fragment launch.json konfiguracja pracuje dla mnie bez obejścia:

{ 
    "name": "mocha tests", 
    "type": "node", 
    "protocol" : "inspector", 
    "request": "launch", 
    "program": "${workspaceRoot}/node_modules/mocha/bin/_mocha", 
    "stopOnEntry": false, 
    "args": [ "--compilers", "ts:ts-node/register", "--no-timeouts", "${relativeFile}"], 
    "cwd": "${workspaceRoot}" 
    } 

działa dobrze dla mnie z Kodeksem node v7.10.0, tsc 2.4.0 i Visual Studio 1.13.1. Zarówno mocha, jak i tsc są zainstalowane lokalnie pod numerem node_modules.

Powiązane problemy