2015-03-15 4 views
3

Я хочу, чтобы иметь возможность оставить оператор debugger (или что-то подобное) прямо в мой код и получить REPL, когда я запускаю свои тесты, чтобы я мог взаимодействовать с моим кодом для отладки.CLI-отладчик для тестов Mocha

Я понимаю, что узел (через V8) поддерживает debugger заявление из коробки, но вы должны запустить свой код с определенными флагами (через node debug или node --debug или node --debug-brk - я не очень понимаю разницу).

Mocha имеет такие же флаги, а также, и когда я бегу mocha debug я действительно получить отладчик строки в моем терминале:

< Debugger listening on port 5858 
connecting to port 5858... ok 
break in node_modules/mocha/bin/_mocha:5 
    3 */ 
    4 
> 5 var program = require('commander') 
    6 , path = require('path') 
    7 , fs = require('fs') 
debug> 

Но точка останова в коде мокко, а не моя точка останова. This blog post говорит, что вы должны ввести run, затем continue, чтобы добраться до точки останова, но когда я вхожу run, он сообщает мне, что «приложение уже работает ...», и когда я вхожу в continue, он сообщает мне «SyntaxError: Illegal continue statement».

В нем говорится «прослушивание порта 5858» - мне нужно открыть отдельное подключение к этому порту откуда-то, например, в браузере или другом сеансе терминала?

Я видел кое-что о node-inspector, но мне нравится как можно больше оставаться в терминале, поэтому я предпочитаю способ сделать это, не открывая браузер.

Я новичок в JS, пожалуйста ELI5 :)

Кроме того, если это уместно, я на самом деле с помощью io.js, не Node собственно

ответ

1

Когда узел/iojs отладчик Первый начинается и он всегда разбивается на первую строку, независимо от того, какой скрипт был передан в интерпретатор.

Поскольку вы уже используете свое приложение, вам не нужно вводить пробег здесь, но вы можете просто набрать c, чтобы продолжить выполнение до тех пор, пока не будет его точка останова.

run полезен, если программа завершается, когда вы находитесь в отладчике, - вы можете запустить ее снова! (Вы также можете сделать restart, чтобы перезапустить программу в отладчике).

+0

Удивительный, спасибо! Я не понимал, что ключ должен был использовать 'c' вместо' continue'. Кроме того, на всякий случай кто-то сталкивается с этим, когда отладчик попадает в точку останова (должен быть справа после ввода 'c'), вы должны ввести' repl', чтобы получить REPL, где находится инструкция 'debugger' –