Mocha пытается найти тестовые файлы test
по умолчанию, как мне указать другой каталог, например server-test
?
unit-testing
node.js
mocha
Freewind
источник
источник
.only
и.skip
управлять тем, какие тесты вы бегут. Это важно при разработке конкретной функции, когда вы не хотите ждать, пока весь набор тестов будет работать постоянно.Ответы:
Изменить: эта опция устарела: https://mochajs.org/#mochaopts
Если вы хотите сделать это, просто запустив
mocha
командную строку, но хотите./server-tests
вместо этого запускать тесты в папке./test
, создайте файл./test/mocha.opts
с этим в файле:Если вы хотите запустить все в этой папке и подкаталогах, поместите это в
test/mocha.opts
mocha.opts
являются аргументами, передаваемыми через командную строку, поэтому, если сделать первую строку просто каталогом, который вы хотите изменить, тесты тоже будут перенаправлены из./test/
источник
mocha.opts
файл может быть помещен куда угодно, а затем просто выполнить,mocha
указав путь к его файлу конфигурации, например:mocha --opts ./mocha.opts
Использовать это:
Или, если у вас есть подкаталоги, используйте это:
Обратите внимание на использование двойных кавычек. Если вы их опустите, вы не сможете запускать тесты в подкаталогах.
источник
mocha test/server-test
mocha ./**/*.test.js
(так что я могу сопоставить тестовый файл с файлом модуля). Шаблон перестал работать для меня, когда я добавил тестовый файл на уровне иерархии файлов, отличном от остальных тестов, и обнаружил только один нечетный файл шара, а не дюжину других, которые жили на одном уровне в иерархии. , Завершение в кавычки исправило это.--recursive
как я объясню нижеВот один из способов, если в вашей тестовой папке есть подпапки, например
Затем в Linux вы можете использовать команду find для рекурсивного вывода списка всех файлов * .js и передачи его mocha:
источник
--recursive
как я объясню нижеmocha
не имеет возможности установить желаемую структуру каталогов в конфигурации?Хороший способ сделать это - добавить в package.json «тестовый» скрипт npm, который вызывает mocha с правильными аргументами. Таким образом, ваш package.json также описывает вашу тестовую структуру. Это также позволяет избежать всех этих кроссплатформенных проблем в других ответах (двойные и одинарные кавычки, «найти» и т. Д.)
Чтобы mocha запустил все js-файлы в каталоге «test»:
Тогда для запуска только тестов на дым вызовите:
Таким образом, вы можете стандартизировать выполнение всех тестов во всех проектах, поэтому, когда новый разработчик запускает ваш проект или другой, он знает, что «npm test» будет запускать тесты. Для этого есть хороший исторический приоритет (например, в Maven большинство проектов старой школы «делают»). Это точно помогает CI, когда все проекты имеют одинаковую команду тестирования.
Точно так же у вас может быть подмножество более быстрых тестов «дыма», которые вы можете захотеть запустить mocha:
Тогда для запуска только тестов на дым вызовите:
Другой распространенный способ - поместить ваши тесты в тот же каталог, что и источник, который они тестируют, но вызвать файлы теста * .spec.js. Например: src / foo / foo.js протестирован src / foo / foo.spec.js.
Чтобы запустить все тесты с именем * .spec.js по соглашению:
Затем для запуска всех тестов вызовите:
Смотрите образец здесь? Хорошо. :) Последовательность побеждает Мура .
источник
Не используйте параметр -g или --grep, этот шаблон работает с именем теста внутри него (), а не с файловой системой. Текущая документация вводит в заблуждение и / или совершенно не соответствует этому. Чтобы ограничить всю команду частью файловой системы, вы можете передать шаблон в качестве последнего аргумента (это не флаг).
Например, эта команда установит для вашего репортера спецификацию, но будет проверять только js-файлы непосредственно в каталоге server-test:
Эта команда будет делать то же, что и выше, плюс она будет запускать только те тестовые случаи, в которых строка it () / определение теста начинается с "Fnord:":
источник
Если в файле node.js , некоторые новые конфигурации, начиная с Mocha v6 :
Вариант 1: создать
.mocharc.json
в корневом каталоге проекта:Вариант 2: добавить
mocha
свойство в проектpackage.json
:Больше вариантов здесь .
источник
Запустите все файлы,
test_directory
включая соответствующие подкаталогиtest.js
или используйте
--recursive
переключательисточник
У меня была эта проблема только сейчас, и я решил ее, удалив
--recursive
опцию (которую я установил) и используя ту же структуру, которая предложена выше:mochify "test/unit/**/*.js"
Это запустило все тесты во всех каталогах под
/test/unit/
меня, игнорируя другие каталоги в/test/
источник
Теперь дни (2020 год) вы можете справиться с этим, используя конфигурационный файл mocha :
Шаг 1. Создайте файл .mocharc.js в корневом каталоге вашего приложения.
Шаг 2: Добавьте приведенный ниже код в конфигурационный файл mocha:
Дополнительные параметры в конфигурационном файле см. По следующей ссылке: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js.
источник
Я на Windows 7 с использованием node.js v0.10.0 и mocha v1.8.2 и npm v1.2.14. Я просто пытался заставить мокко использовать тест / модуль пути, чтобы найти свои тесты, потратив много времени и попробовав несколько вещей, которые я приземлился,
Использование опции «test / unit / *. Js» не работает в Windows. По понятным причинам оболочка Windows не расширяет подстановочные знаки, такие как unixen.
Однако использование «test / unit» работает без шаблона файла. например. «mocha test / unit» запускает все файлы, найденные в папке «test / unit».
Это все еще запускает одну папку файлов в качестве тестов, но вы можете передать несколько имен каталогов в качестве параметров.
Также для запуска одного тестового файла вы можете указать полный путь и имя файла. например. "тест мокко / unit / mytest1.js"
Я на самом деле настроил в package.json для npm "scripts": {"test": "mocha test / unit"},
Так что 'npm test' запускает мои юнит-тесты.
источник
--recursive
опцию, например, такую:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
работает на Windows. Такжеnode_modules\.bin\mocha "**\*.js"
работает (мой реальный случай). Но я ищу способ исключить каталог node_modules . (Я тоже использую gulpfile.js, но иногда мне нужно запустить тест напрямую с mocha)Если вы используете
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
источник
npm run mocha "./test/*.spec.js!(~)"
игнорирует аргумент glob, ноnode_modules/.bin/mocha "./test/*.spec.js!(~)"
не делает.npm run mocha -- yourArgs
Как упомянуто @superjos в комментариях использования
mocha --recursive "some_dir"
источник
Похоже, что это не «легкая» поддержка для смены тестовой директории.
Однако, возможно, вам стоит взглянуть на эту проблему относительно вашего вопроса.
источник
Как предложил @ jeff-dickey, в корне вашего проекта создайте папку с именем
test
. В этой папке создайте файл с именемmocha.opts
. Теперь, когда я пытаюсь улучшить ответ Джеффа, у меня получилось вместо того, чтобы указывать имя только одной тестовой папки, я добавил шаблон для поиска всех тестов, которые нужно запустить в моем проекте, добавив следующую строку:*/tests/*.js --recursive
вmocha.opts
Если вы вместо этого хотите указать точные папки для поиска тестов, я сделал что-то вроде этого:
Я надеюсь, что это поможет всем, кому нужно больше, чем то, что дают другие ответы
источник