Как установить и запустить Mocha, модуль тестирования Node.js? Получение сообщения «мокко: команда не найдена» после установки

92

У меня проблемы с тем, чтобы Mocha работал должным образом, и я хотел бы сказать, что это задокументировано, но (похоже) не так много документации по фактическому запуску этой вещи.

Я установил его с помощью npm(как глобально, так и локально), и каждый раз, когда я запускаю его, я получаю:

$ mocha
mocha: command not found

Хорошо, я решил, что это не в моем PATH, поэтому я попытался запустить его напрямую,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory

Наконец, я попытался открыть другой binфайл и получил:

$ ./node_modules/mocha/bin/_mocha 
path.existsSync is deprecated. It is now called `fs.existsSync`.

  .

  ✔ 1 tests complete (1ms)

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

И есть какие-нибудь мысли по поводу ошибки, которую я получил при третьей попытке?

Редактировать:

Я бегу,

  • Ubuntu 11.10 64-разрядная.
  • Node.js 0.7.5
  • нпм 1.1.8
  • мокко 0,14,1
  • должен 0.6.0
Стивен Мелроуз
источник
2
С node 0.6.12, npm 1.1.4 и выполнением npm install mochaя получаю, ./node_modules/.bin/mochaкак и ожидалось. sudo npm install -g mochaдостает меня /usr/local/bin/mocha. Если это не работает должным образом в вашей среде, это может быть ошибка или просто мокко не обновлен для поддержки узла 0.7. *. Что касается вашего предупреждения устаревания, existsи existsSyncбыли перенесены из pathк fsв узле 0.7.1.
Линус Тиль
Я перешел на Node.js 0.6.12, добавил "./node_modules/.bin" в свой PATH, и все в порядке.
Стивен Мелроуз

Ответы:

184

Начиная с npm 5.2.0, в npm добавлена ​​новая команда "npx", которая делает это намного проще, если вы запустите:

npx mocha <args>

Примечание: необязательные аргументы перенаправляются выполняемой команде (в данном случае мокко)

это автоматически выберет исполняемую команду «mocha» из вашего локально установленного mocha (всегда добавляйте ее как зависимость разработчика, чтобы гарантировать, что правильный вариант всегда будет использоваться вами и всеми остальными).

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

Вы можете узнать больше о npx здесь


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

вы не хотите, чтобы ваши библиотечные тесты терпели неудачу в зависимости от настройки машины (мокко как глобальная, глобальная версия мокко и т. д.), способ использования локального мокко, который работает кросс-платформенно:

node node_modules/.bin/mocha

npm помещает псевдонимы для всех двоичных файлов в ваших зависимостях в этой специальной папке. Наконец, npm автоматически добавит node_modules / .bin в PATH при запуске сценария npm, поэтому в вашем package.json вы можете просто:

"scripts": {
  "test": "mocha"
}

и вызвать его с помощью

npm test
Беня
источник
1
+1, некоторое время назад я употребляю мокко, но не осознавала этого. Это должен быть принятый ответ!
gihanchanuka
7
@ michael.kebe нет, вам не нужно указывать этот путь для использования локального мокко, npm уже добавляет "./node_modules/.bin" в $ PATH, поэтому по умолчанию будет использоваться локальная версия.
Benja
Я считаю, что команда должна быть node node_modules / mocha / bin / mocha, а не node node_modules / .bin / mocha
Мина Люк
3
@MinaLuke, который тоже работает, но это плохая идея, /node_modules/.bin/{module-binary-name}это место, где npm помещает ярлыки для двоичных файлов в ваши зависимости, вы не должны напрямую ссылаться на файл в источниках зависимости, так как это может сломаться в следующей версии.
Benja
1
@DougBarbieri хороший улов, это старый ответ, я обновлю упоминание npx, спасибо!
Benja
18

После дальнейшего чтения и подтверждения от Линуса Дж. Тиля выше, я обнаружил, что просто должен,

  • Перейти на Node.js 0.6.12
  • И либо,
    • Установите Mocha как глобальный
    • Добавить ./node_modules/.binв мойPATH
Стивен Мелроуз
источник
4
У меня есть node 0.8.12 и mocha как глобально, так и локально (для разных проектов), и они работают. Таким образом, нет необходимости понижать версию узла. Для локально установленного мокко просто убедитесь, что ваш PATH установлен, как указано выше, или вызовите его прямо из вашего скрипта (Makefile или тег "scripts").
Qichao Dong
1
У меня был установлен Mocha локально и глобально, но он не был найден в пути (Win8). Мне пришлось вручную добавить папку ./node_modules/.bin относительно моего проекта в мой PATH, перезапустить консоль, а затем набрать «мокко». Не идеально, но быстрый способ заставить его работать. Возможно, если у вас есть место на верхнем уровне для локальной установки мокко, тогда сделайте ссылку на этот PATH, чтобы вы могли использовать его в другом месте.
Али
1

Для окон:

Package.json

  "scripts": {
    "start": "nodemon app.js",
    "test": "mocha"
  },

затем запустите команду

npm run test
Ашутош Джа
источник
1

При установке узловых модулей для мокко я попробовал следующие команды

  • npm install
  • npm установить мокко
  • npm install --save-dev mocha
  • npm install mocha -g #, чтобы также установить его глобально

и при запуске или выполнении теста мокко, который я пытался

  • тест мокко
  • npm запустить тест
  • тест мокко тест \ index.test.js
  • npm тест

но я получал следующую ошибку:

'Мокко' не распознается как внутренняя или внешняя команда

Итак, попробовав все, выяснилось, что просто указать путь к переменным среды в системных переменных как:

C: \ Program Files \ nodejs \

и это сработало :)

ДХИРАДЖ
источник
0

Чтобы запустить Mocha с помощью mochaкоманды с вашего терминала, вам необходимо установить mocha глобально на thisмашину:

npm install --global mocha

Затем cdв папку проекта / test и запуститеmocha yourTestFileName.js


Если вы хотите сделать mochaдоступным внутри себя package.jsonкак зависимость для разработки:

npm install --save-dev mocha

Затем добавьте mochaв свои скрипты внутри package.json.

"scripts": {
    "test": "mocha"
  },

Затем запустите npm testсвой терминал.

Куай-Гон Джинн
источник