У своєму пакеті npm я хотів би наслідувати шаблон Meteor наступним чином: вихідний файл (названий client.js
) має тестовий файл (названий client.tests.js
) жити в а src/
папку. Випробування проводяться з npm test
команда
Я дотримуюся документів використання на "t". Я не хочу використовувати find
у моїй команді тестування пакету.
Я розумію, що моха може рекурсивно виконувати тести:
мока - рекурсивна
Я розумію, що Mocha може виконувати тести в певній підпапці за допомогою
--recursive
прапор:mocha src - рекурсивний
Я також розумію, що я можу вказати глобус для фільтрування файлів шляхом проходження
*.tests.js
:mocha * .tests.js
Але я хочу всіх трьох. Я хочу, щоб мокха перевіряла лише файли, які закінчуються tests.js
у папці src, рекурсивно перевіряючи підкаталоги.
mocha --recursive *.tests.js
// See the files?
$ > ll ./src/app/
total 168
-rw-r--r-- ... client.js
-rw-r--r-- ... client.tests.js
// Option A
$ > mocha --recursive *.tests.js
Warning: Could not find any test files matching pattern: *.tests.js
No test files found
// Option B
$ > mocha *.tests.js --recursive
Warning: Could not find any test files matching pattern: *.tests.js
No test files found.
// Option C
$ > mocha --recursive src/app/*.tests.js
3 passing (130ms)
3 failing
Тому...
- Чому мока не підбирає
*.tests.js
файли у підпапках? - Чому це працює, якщо я вказую повний шлях до файлу?
- Як змусити його працювати за бажанням?
Відповіді:
26 за відповідь № 1The --recursive
прапор призначений для роботи в каталогах. Якби ви перейшли глобус, який відповідає каталогам, то ці каталоги будуть рецензуватися рекурсивно, але якщо ви передасте глобус, який відповідає файлам, як ви робите, то --recursive
є неефективним. Я б запропонував не використовувати --recursive
з глобусом, оскільки глобуси вже мають можливість рекурсивно переглядати підкаталоги. Ви можете зробити:
mocha "src/app/**/*.tests.js"
Це відповідатиме усім файлам, які відповідають *.tests.js
рекурсивно в src/app
. Зверніть увагу, як я використовую одинарні лапки навколовізерунок. Це потрібно, щоб процитувати шаблон, щоб він передався як-є глобальному коду Mocha. Інакше ваша оболонка може інтерпретувати його. Деякі оболонки, залежно від варіантів, перекладуть **
в *
і ви не отримаєте бажаних результатів.