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

Изменить ноябрь 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 интеграцию с инспектором. Он довольно прост в использовании. Я уже написал подробное объяснение того, как использовать его в этом сообщении