Mocha пытается найти тестовые файлы под test
по умолчанию, как указать другой каталог, например. server-test
?
Как указать тестовый каталог для мокко?
Ответ 1
Если вы хотите сделать это, просто выполнив mocha
в командной строке, но захотите запустить тесты в папке ./server-tests
вместо ./test
, создайте файл в ./test/mocha.opts
только с этим в файл:
server-tests
Если вы хотите запустить все в этой папке и подкаталогах, поместите это в test/mocha.opts
server-tests
--recursive
mocha.opts
- это аргументы, переданные через командную строку, поэтому первая строка, которую вы хотите изменить, также будет перенаправлена из ./test/
Ответ 2
Используйте это:
mocha server-test
Или если у вас есть подкаталоги, используйте это:
mocha "server-test/**/*.js"
Обратите внимание на использование двойных кавычек. Если вы их опустите, вы не сможете запускать тесты в подкаталогах.
Ответ 3
Здесь один из способов, если у вас есть подпапки в вашей тестовой папке, например.
/test
/test/server-test
/test/other-test
Затем в linux вы можете использовать команду find, чтобы перечислить все *.js файлы рекурсивно и передать его в mocha:
mocha $(find test -name '*.js')
Ответ 4
Не используйте параметр -g или --grep, этот шаблон работает с именем теста внутри него(), а не с файловой системой. Текущая документация вводит в заблуждение и/или совершенно ошибочна в этом отношении. Чтобы ограничить всю команду частью файловой системы, вы можете передать шаблон как последний аргумент (его не флаг).
Например, эта команда установит ваш репортер в спецификацию, но будет проверять только файлы js непосредственно в каталоге сервера-теста:
mocha --reporter spec server-test/*.js
Эта команда будет делать то же самое, что и выше, плюс она будет запускать только те тесты, где строка/определение теста it() начинается с "Fnord:":
mocha --reporter spec --grep "Fnord:" server-test/*.js
Ответ 5
Запустите все файлы в test_directory
, включая подкаталоги, соответствующие test.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
или используйте переключатель --recursive
mocha --recursive test_directory/
Ответ 6
Хороший способ сделать это - добавить в package.json "тестовый" скрипт npm, который вызывает mocha с правильными аргументами. Таким образом, ваш package.json также описывает вашу тестовую структуру. Это также позволяет избежать всех этих кроссплатформенных проблем в других ответах (двойные и одинарные кавычки, "найти" и т.д.)
Чтобы mocha запустил все js файлы в каталоге "test":
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
Тогда для запуска только тестов на дым вызовите:
npm test
Таким образом, вы можете стандартизировать выполнение всех тестов во всех проектах, поэтому, когда новый разработчик запускает ваш проект или другой, он знает, что "npm test" будет запускать тесты. Для этого есть хороший исторический приоритет (например, Maven, большинство старых школ тоже "делают" проекты). Это точно помогает CI, когда все проекты имеют одну и ту же команду тестирования.
Точно так же у вас может быть подмножество более быстрых "дымовых" тестов, которые вы можете захотеть запустить mocha:
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
Тогда для запуска только тестов на дым вызовите:
npm smoketest
Другой распространенный способ - поместить ваши тесты в тот же каталог, что и источник, который они тестируют, но вызвать тестовые файлы *.spec.js. Например: src/foo/foo.js протестирован src/foo/foo.spec.js.
Чтобы запустить все тесты с именем *.spec.js по соглашению:
"scripts": {
"test": "mocha **/*.spec.js"
},
Затем для запуска всех тестов вызовите:
npm test
Смотрите образец здесь? Хорошо. :) Последовательность побеждает Мура.
Ответ 7
У меня была эта проблема только сейчас и решила ее, удалив параметр --recursive
(который я установил) и используя ту же структуру, что и предлагалось выше:
mochify "test/unit/**/*.js"
Это провело все тесты во всех каталогах под /test/unit/
для меня, игнорируя другие каталоги внутри /test/
Ответ 8
Я нахожусь в Windows 7, используя node.js v0.10.0 и mocha v1.8.2 и npm v1.2.14. Я просто пытался заставить мокко использовать тест/блок пути, чтобы найти мои тесты, Проведя много времени и попробовав несколько вещей, я приземлился,
Использование опции "test/unit/*. js" не работает в окнах. По уважительным причинам, что оболочка Windows не расширяет подстановочные знаки, такие как unixen.
Однако использование "test/unit" действительно работает без шаблона файла. например. "mocha test/unit" запускает все файлы, найденные в папке test/unit.
Это все еще запускает файлы одной папки как тесты, но вы можете передавать несколько имен каталогов в качестве параметров.
Также для запуска одного тестового файла вы можете указать полный путь и имя файла. например. "mocha test/unit/mytest1.js"
Я действительно настраиваю в package.json для npm "скрипты": { "test": "mocha test/unit" },
Итак, "npm test" запускает мои модульные тесты.
Ответ 9
Если вы используете nodejs
, в package.json
в разделе scripts
- Для
global (-g)
установок:"test": "mocha server-test"
или"test": "mocha server-test/**/*.js"
для поддокументов - Для
project
установок:"test": "node_modules/mocha/bin/mocha server-test"
или"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
для поддокументов
Затем просто запустите ваши тесты как npm test
Ответ 10
Как упоминалось в комментариях @superjos в комментариях, используйте
mocha --recursive "some_dir"
Ответ 11
Это не похоже на "легкую" поддержку для изменения тестового каталога.
Однако, возможно, вам стоит взглянуть на этот вопрос относительно вашего вопроса.
Ответ 12
Как предложил @jeff-dickey, в корне вашего проекта создайте папку с именем test
. В этой папке создайте файл с именем mocha.opts
. Теперь, когда я пытаюсь улучшить ответ Джеффа, у меня получилось вместо того, чтобы указывать имя только одной тестовой папки, я добавил шаблон для поиска всех тестов, которые нужно запустить в моем проекте, добавив следующую строку:
*/tests/*.js --recursive
в mocha.opts
Если вы вместо этого хотите указать точные папки для поиска тестов, я сделал что-то вроде этого:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
Я надеюсь, что это поможет всем, кому нужно больше, чем то, что дают другие ответы
Ответ 13
Если в файле node.js есть несколько новых конфигураций, начиная с Mocha v6:
Вариант 1. Создайте .mocharc.json
в корневом каталоге проекта:
{
"spec": "path/to/test/files"
}
Вариант 2: добавить свойство mocha
в проект package.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
Больше вариантов здесь.