Как использовать npm для запуска тестов в нескольких каталогах с использованием подстановочных знаков - PullRequest
0 голосов
/ 09 марта 2020

Когда я использую эту команду

"test": "mocha *.spec.js *.test.js test/*.spec.js test/*.test.js",

Она выполняется так, как я хочу, т.е. все тестовые и специальные c файлы в root (2) плюс любые в test / (2). Так что 4 запускайся.

  4 passing (4ms)                                                                                           

Я хотел бы упростить это, но все мои попытки потерпели неудачу. примеры:

"test": "mocha",
"test": "mocha *.spec.js *.test.js",
"test": "mocha **/*.spec.js **/*.test.js",
"test": "mocha */*.spec.js */*.test.js",

, но они запускают только 2 из 4 тестов. 2 в root, 2 в тесте /

Я также пытался использовать

--recursive

, но это не помогло.

Как запустить все 4 с более короткий синтаксис с использованием подстановочных знаков?

1 Ответ

0 голосов
/ 10 марта 2020

За документы :

Вы должны всегда указывать свои глобусы в npm скриптах . Если вы используете двойные кавычки, это оболочка на UNIX, которая расширит шарик. С другой стороны, если вы используете одинарные кавычки, модуль node-glob будет обрабатывать его расширение.

со следующей структурой (по одному it в каждом тестовом файле, mocha@7.1.0 установлено):

temp/
    node_modules/
    test/
        four.test.js
        three.spec.js
    one.test.js
    package-lock.json
    package.json
    two.spec.js

с использованием сценария:

"test": "mocha '**/*.spec.js' '**/*.test.js'"

или:

"test": "mocha \"**/*.spec.js\" \"**/*.test.js\""

. Выполнены все четыре теста:

* 1028. *

Для сравнения, версия без * без кавычек запускает тесты в test/.


Вы можете еще больше упростить использование шаблона **/*.{spec,test}.js; опять же, в вашем скрипте нужны одинарные или двойные кавычки.

...