Какой наименьший путь сопротивления для отладки тестов мокко?
Изменить ноябрь 2016: Node теперь имеет встроенный отладчик, который можно начинать с --inspect
. Этот ответ объясняет это: qaru.site/info/84239/....
Я делаю тест мокко в coffeescript. В верхней части теста у меня есть:
require "../assets/js/theObject.coffee"
debugger
ss = new TheObject()
Я хотел бы остановиться на этой строке отладчика, потому что объект в theObject.coffee
не загружается. Я использую node -инспектор, и он работает, sorta.
Процесс, который у меня есть:
- start node -инспектор
- запустите тест в командной строке с помощью
mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
- перейдите на страницу node -инспектор, обновите его, если он уже открыт.
- дождитесь загрузки файла
theObject.coffee
, затем установите точку останова на правильную строку
Должен быть более простой способ. Похоже, я должен иметь возможность работать отладчиком и просто останавливаться на этой линии отладчика, но я не могу это найти.
У меня есть WebStorm, у которого есть отладчик (в этой статье обсуждается настройка его для запуска тестов mocha, но это не помогло мне), но когда я начинаю, он терпит неудачу. Команда, запущенная в окне отладки 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.
Env: Windows 7, Webstorm, Node 0.8.16, mocha 1.7.4, git - bash
Вопрос: если вы начинаете с нуля с помощью Mocha, какой простой способ получить отладчик, который будет легко останавливаться на линии отладчика? Легко это ключевое слово здесь.
Изменить: поскольку я спрашиваю об этом, я прекратил использование Windows и работаю в Ubuntu. Мой процесс отладки мокки (который я использую нечасто) одинаковый.
Ответы
Ответ 1
Изменить, спустя годы: самый короткий путь в Node 6+: mocha --debug-brk --inspect ./test.js
в сочетании с плагином Node Inspector Manager.
Через несколько недель нет ответов. Вот самый быстрый путь, который я нашел.
- написать mocha тесты
- установить
node-inspector
- start
node-inspector
- теперь он будет слушать 5858
- запустите тест мокки с помощью
--debug-brk
- в этот момент тест мокки приостанавливается на первой строке
- откройте веб-браузер и перейдите на localhost: 5858
- (необязательно: добавьте строку отладчика в верхней части тестового файла, установите точки останова после его остановки в этом файле)
- нажмите F10, чтобы получить код.
- node -инспектор остановится на любой строке, на которой есть
debugger
. Иногда он не перемещает окно файла кода в нужное место, поэтому вам нужно нажать F10, чтобы он перешел к следующей строке и покажу, где он находится в файле.
Командная строка:
node-inspector & mocha --compilers coffee:coffee-script/register ./test/appTests.coffee --ui bdd -d -g "should X then Y" --debug-brk
Ответ 2
В дополнение к ответу @jcollum выше, я нашел вместо того, чтобы использовать флаг -debug-brk, лучше просто использовать флаг -debug с -w (watch)
Таким образом, когда вы добавляете и удаляете строки отладчика из вашего кода, mocha автоматически перезагружает тесты, а ваш node -инспектор приостанавливается в соответствующей строке.
Это избавляет от необходимости повторного подключения терминала к повторному запуску тестов, а затем без необходимости "продолжать" в отладчике пропустить первую строку источника.
Ответ 3
С последними версиями Mocha и node-inspector это отлично работает для меня:
$ node-debug ./node_modules/mocha/bin/_mocha
Он загружает локальный исполняемый файл Mocha в качестве отладочного процесса, останавливаясь на первой строке, чтобы вы могли настроить свои точки останова.
Ответ 4
Альтернативный способ использования отладки WebStorm node.
Короче:
- Вам нужен WebStorm
- Создайте новый профиль отладки node в WebStorm
- Задайте путь к вашему двоичному файлу mocha в
Path to Node App JS File
- Добавить контрольные точки и запустить сеанс из WebStorm
Подробные инструкции со скриншотами Glenn Block.
Ответ 5
Загорается на http://s-a.github.io/iron-node/. Это наиболее эффективное программное обеспечение для отладки любых Node.js связанных.
$ iron-node ./node_modules/mocha/bin/_mocha
![введите описание изображения здесь]()
![введите описание изображения здесь]()
Ответ 6
Если это приложение Node, то использование встроенного отладчика Node из командной строки - это самый быстрый путь к славе:
$ mocha $args -- debug
Ответ 7
В 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
Он также показывает вам параметры, с которыми он работает, поэтому вы можете скопировать их в другую среду, если вам нужно.
Ответ 8
Что касается Webstorm или PhpStorm, вы можете добавить определенную конфигурацию отладки мокко:
![Debug configuration]()
Вам нужно будет добавить через зеленый цвет, вы можете дать ему имя.
Если уже установленный мокко в проекте через:
npm install mocha --save
или
yarn add mocha
он найдет соответствующий модуль в вашем проекте.
Мне нужно было указать правильный путь к моим модульным тестам и нажать на значок Include subdirectories
/
Поскольку мой проект - это typescript, мне пришлось добавить:
yarn add ts-node
Для чистого js-проекта это не обязательно.
Теперь вы можете запустить весь тестовый костюм, и затем вы можете выбрать отдельные тестовые примеры из списка и запустить их и самостоятельно отладить их.
Ответ 9
Ни один из существующих ответов не упоминает путь наименьшего сопротивления: когда вам нужно отлаживать тесты Mocha, вы можете просто добавить другое утверждение, которое проверяет значение, которое вы хотите отлаживать.
myVar.should.equal(expected);
Я нахожу, что это часто все, что мне нужно. И я просто удаляю дополнительные assert (ы), которые я использовал для отладки, когда я закончил.
Ответ 10
Современный способ сделать это - использовать функцию nodejs интеграцию с инспектором. Он довольно прост в использовании. Я уже написал подробное объяснение того, как использовать его в этом сообщении