Как указать тестовый каталог для мокко?



МОКа пытается найти тестовые файлы под test по умолчанию, как я могу указать другой dir, например server-test?

634   12  

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.opts

server-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.js

find ./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

  1. на global (-g) оборудование: "test": "mocha server-test" или "test": "mocha server-test/**/*.js" для вложенных документов
  2. на project оборудование: "test": "node_modules/mocha/bin/mocha server-test" или "test": "node_modules/mocha/bin/mocha server-test/**/*.js" для вложенных документов

тогда просто запустите свои тесты нормально, как npm test

Это не кажется какой-либо" легкой " поддержкой для изменения тестового каталога.
Однако, возможно, вам стоит взглянуть на этот вопрос относительно вашего вопроса.

Как упоминалось @superjos в комментариях использовать

mocha --recursive "some_dir"

как предложил @jeff-dickey, в корне вашего проекта создайте папку под названием test. В этой папке создайте файл с именем mocha.opts. Теперь, когда я пытаюсь улучшить ответ Джеффа, то, что сработало для меня, было вместо указания имени только одной тестовой папки, я указал шаблон для поиска всех тестов для запуска в моем проекте, добавив эту строку:

*/tests/*.js --recursive на mocha.opts

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

shared/tests/*.js --recursive
server/tests/graph/*.js --recursive

Я надеюсь, что это поможет всем, кто нуждался больше, чем то, что другие ответы обеспечивают

Comments

    Ничего не найдено.