it-swarm.com.ru

каков наименьший путь сопротивления для отладки тестов мокко?

Изменить ноябрь 2016: теперь в Node есть встроенный отладчик, который можно запустить с --inspect. Этот ответ объясняет это: https://stackoverflow.com/a/39901169/30946

Я строю тест мокко в coffeescript. Прямо в верхней части теста у меня есть: 

require "../assets/js/theObject.coffee"
debugger
ss = new TheObject()

Я хотел бы остановиться на этой строке отладчика, потому что объект в theObject.coffee не загружается. Я использую нод-инспектор, и это работает, Сорта. 

Процесс, который у меня есть: 

  1. запустить узел-инспектор
  2. запустить тест из командной строки с помощью mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
  3. перейдите на страницу инспектора узлов, обновите ее, если она уже открыта 
  4. дождитесь загрузки файла theObject.coffee, затем поставьте точку останова на правильной строке 

Там должен быть более простой способ. Кажется, что я должен иметь возможность запустить отладчик и просто остановить его на этой линии отладчика, но я не могу его найти. 

У меня есть WebStorm, в котором есть отладчик ( в этой статье обсуждается настройка его для запуска тестов мокко, но это не помогло мне), но когда я его запускаю, он не работает. Команда, которая выполняется в окне отладки WebStorm: 

"C:\Program Files\nodejs\node.exe" --debug-brk=64232 C:\Users\jcollum\AppData\Roaming\npm\_mocha

C:\Users\jcollum\AppData\Roaming\npm\_mocha:2
basedir=`dirname "$0"`

Я подозреваю, что это может быть проблема, специфичная для Windows. 

Конверт: Windows 7, Webstorm, узел 0.8.16, mocha 1.7.4, git-bash

Вопрос: если вы начинаете с нуля с Mocha, какой самый простой способ запустить отладчик, который легко остановится на линии отладчика? Легко это ключевое слово здесь. 

Правка: с тех пор как я спросил об этом, я перестал использовать Windows и работаю в Ubuntu. Мой процесс отладки мокко (который я использую нечасто) такой же. 

39
jcollum

Изменить годы спустя : кратчайший путь в узле 6+: mocha --debug-brk --inspect ./test.js вместе с плагином Node Inspector Manager. 

Спустя много недель ответов нет. Вот самый быстрый путь, который я нашел. 

  1. написать тесты мокко 
  2. установить node-inspector
  3. начать node-inspector - теперь будет слушать 5858
  4. запустить тест мокко с помощью --debug-brk
  5. в этот момент тест мокко приостанавливается на первой строке
  6. откройте веб-браузер и перейдите на localhost: 5858 
  7. (необязательно: добавьте строку отладчика вверху тестового файла, установите точки останова после того, как он остановится в этом файле) 
  8. нажмите F10, чтобы получить код
  9. нода-инспектор остановится на любой строке, в которой есть debugger. Иногда он не перемещает окно файла кода в нужное место, поэтому вам нужно нажать F10, чтобы перейти к следующей строке и показать, где он находится в файле. 

Командная строка: 

node-inspector & mocha --compilers coffee:coffee-script/register ./test/appTests.coffee --ui bdd -d -g "should X then Y" --debug-brk

59
jcollum

В дополнение к ответу @ jcollum выше, я обнаружил, что вместо использования флага --debug-brk лучше использовать флаг --debug с параметром -w (watch).

Таким образом, когда вы добавляете и удаляете строки отладчика из своего кода, mocha автоматически перезагружает тесты, а ваш инспектор узлов останавливается на соответствующей строке.

Это избавляет от необходимости повторно посещать терминал, постоянно перезапуская тесты, а затем без необходимости нажимать кнопку «продолжить» в отладчике, чтобы пройти первую строку исходного кода.

11
captainclam

С последними версиями Mocha и node-inspector это отлично работает для меня:

$ node-debug ./node_modules/mocha/bin/_mocha

Он загружает локальный исполняемый файл Mocha как отлаженный процесс, останавливаясь на первой строке, чтобы вы могли установить точки останова.

8
doingweb

Направляется на http://s-a.github.io/iron-node/ . Это наиболее эффективное программное обеспечение для отладки всего, что связано с Node.js. 

$ iron-node ./node_modules/mocha/bin/_mocha

 enter image description here

 enter image description here

6
Stephan Ahlf

Альтернативный способ использования отладчика узлов WebStorm.

Короче:

  1. Вам нужен WebStorm
  2. Создать новый профиль отладки Node в WebStorm
  3. Задайте путь к вашему бинарному файлу mocha в Path to Node App JS File
  4. Добавить точки останова и начать сеанс из WebStorm

Подробная инструкция со скриншотами от Glenn Block.

5
Brock

Если это приложение Node, то использование встроенного отладчика Node из командной строки - это самый быстрый путь к славе:

$ mocha $args -- debug
3
Filip Dupanović

В Webstorm теперь вы можете просто установить конфигурацию mocha. Работал для меня практически из коробки:

Node interpreter: /usr/local/bin/node
Working directory: /Users/me/sites/mysite
Mocha Package: /Users/me/sites/mysite/node_modules/mocha

а потом

All in directory
Test directory: /Users/me/sites/mysite/test

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

1
timhc22

Что касается Webstorm или PhpStorm, вы можете добавить определенную конфигурацию отладки mocha:

Debug configuration

Вы должны будете добавить через зеленый, вы можете дать ему имя.

Если уже установленный мокко в проекте через:

 npm install mocha --save

или же

 yarn add mocha

он найдет соответствующий модуль в вашем проекте.

Я должен был указать правильный путь к моим модульным тестам и нажать Include subdirectories /

Так как мой проект является TypeScript, я должен был добавить:

yarn add ts-node

Для чистого проекта JS это не должно быть необходимым.

Теперь вы можете запустить весь тестовый набор, а затем выбрать отдельные тестовые наборы из списка, запустить их и самостоятельно отладить.

1
k0pernikus

Ни один из существующих ответов не упоминает путь наименьшего сопротивления: Когда вам нужно отладить тесты Mocha, вы можете просто добавить еще одно утверждение, которое проверяет значение, которое вы хотите отладить

myVar.should.equal(expected);

Я нахожу, что это часто все, что мне нужно. И я просто удаляю лишние утверждения, которые я использовал для отладки, когда я закончил.

0
Cory House

Современный способ сделать это - использовать функцию интеграции инспектора nodejs . Это довольно просто в использовании. Я уже написал подробное объяснение того, как использовать его в этот пост

0
stropitek