Как указать тестовый каталог для мокко?
МОКа пытается найти тестовые файлы под test по умолчанию, как я могу указать другой dir, например server-test?
12 ответов:
вот один из способов, если у вас есть подпапки в тестовой папке, например
/test /test/server-test /test/other-testзатем в linux вы можете использовать команду find для перечисления всех *.JS файлы рекурсивно и передать его мокко:
mocha $(find test -name '*.js')
используйте этот:
mocha server-testили если у вас есть подкаталоги использовать этот:
mocha "server-test/**/*.js"обратите внимание на использование двойных кавычек. Если вы пропустите их, вы не сможете запускать тесты в подкаталогах.
если вы хотите сделать это все-таки просто работает
mochaв командной строке, но хотел, чтобы запустить тесты в папке./server-testsвместо./testсоздайте файл./test/mocha.optsтолько с этим в файле:server-testsесли вы хотите запустить все в этой папке и подкаталогах, поместите это в
test/mocha.optsserver-tests --recursive
mocha.opts- это аргументы, переданные через командную строку, так что первая строка просто каталог, который вы хотите изменить тесты перенаправление с./test/
Не используйте параметр-g или --grep, этот шаблон работает с именем теста внутри него (), а не с файловой системой. Текущая документация вводит в заблуждение и / или совершенно неверна в этом отношении. Чтобы ограничить всю команду частью файловой системы, вы можете передать шаблон в качестве последнего аргумента (это не флаг).
например, эта команда установит для вашего репортера значение spec, но будет тестировать только JS-файлы непосредственно внутри сервера-test каталог:
mocha --reporter spec server-test/*.jsэта команда будет делать то же самое, что и выше, плюс она будет запускать только тестовые случаи, когда строка it () / определение теста начинается с "Fnord:":
mocha --reporter spec --grep "Fnord:" server-test/*.js
запустить все файлы в
test_directoryвключая подкаталоги, которые соответствуютtest.jsfind ./parent_test_directory -name '*test.js' | xargs mocha -R specили использовать
--recursiveпереключательmocha --recursive test_directory/
у меня была эта проблема только сейчас и решил ее, удалив
--recursiveвариант (который я установил) и используя ту же структуру, предложенную выше:
mochify "test/unit/**/*.js"это запустило все тесты во всех каталогах под
/test/unit/для меня, игнорируя другие каталоги внутри/test/
хороший способ сделать это-добавить "тестовый" скрипт npm в пакет.json, который вызывает mocha с правильными аргументами. Таким образом, ваш пакет.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Другой распространенный шаблон заключается в размещении тестов в том же каталоге, что и источник, который они тестируют, но вызывают тестовые файлы *.спекуляция.js. Например: src/foo / foo.js тестируется src/foo / foo.спекуляция.js.
для выполнения всех тестов с именем *.спекуляция.js по соглашению:
"scripts": { "test": "mocha **/*.spec.js" },затем для выполнения всех тестов вызовите:
npm testсмотрите рисунок здесь? Хороший. :) Последовательность побеждает Мура.
Я на Windows 7 с помощью узла.с JS версии v0.10.0 и мокко В1.8.2 и НПМ В1.2.14. Я просто пытался заставить мокко использовать тест пути / блок, чтобы найти мои тесты, Потратив много времени и попробовав несколько вещей, я приземлился,
с помощью " test / unit/*.опция " js " не работает в windows. По уважительным причинам оболочка windows не расширяет подстановочные знаки, такие как unixen.
однако использование "test / unit" работает без шаблона файла. например. "mocha test / unit" запускает все файлы, найденные в папка test / unit.
Это все еще запускает только один файл папки в качестве тестов, но вы можете передать несколько имен каталогов в качестве параметров.
также для выполнения одного тестового файла можно указать полный путь и имя файла. например. "мокко тест / блок / mytest1.ОАО"
Я на самом деле настройки в пакете.json для npm "файлы сценариев": { "test": "Mocha test / unit" },
Так что 'npm test' запускает мои модульные тесты.
если вы используете
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
Это не кажется какой-либо" легкой " поддержкой для изменения тестового каталога.
Однако, возможно, вам стоит взглянуть на этот вопрос относительно вашего вопроса.
как предложил @jeff-dickey, в корне вашего проекта создайте папку под названием
test. В этой папке создайте файл с именемmocha.opts. Теперь, когда я пытаюсь улучшить ответ Джеффа, то, что сработало для меня, было вместо указания имени только одной тестовой папки, я указал шаблон для поиска всех тестов для запуска в моем проекте, добавив эту строку:
*/tests/*.js --recursiveнаmocha.optsесли вы вместо этого хотите указать точные папки для поиска тестов, я сделал что-то вроде это:
shared/tests/*.js --recursive server/tests/graph/*.js --recursiveЯ надеюсь, что это поможет всем, кто нуждался больше, чем то, что другие ответы обеспечивают
Comments