/ / Як можна рекурсивно шукати в моїй папці `src` конкретний шаблон файлу? - javascript, node.js, npm, mocha

Як мокка може рекурсивно шукати в моїй `src` папці для певного шаблону файлу? - javascript, node.js, npm, mocha

У своєму пакеті npm я хотів би наслідувати шаблон Meteor наступним чином: вихідний файл (названий client.js) має тестовий файл (названий client.tests.js) жити в а src/ папку. Випробування проводяться з npm test команда

Я дотримуюся документів використання на "t". Я не хочу використовувати find у моїй команді тестування пакету.

  1. Я розумію, що моха може рекурсивно виконувати тести:

    мока - рекурсивна

  2. Я розумію, що Mocha може виконувати тести в певній підпапці за допомогою --recursive прапор:

    mocha src - рекурсивний

  3. Я також розумію, що я можу вказати глобус для фільтрування файлів шляхом проходження *.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

Тому...

  1. Чому мока не підбирає *.tests.js файли у підпапках?
  2. Чому це працює, якщо я вказую повний шлях до файлу?
  3. Як змусити його працювати за бажанням?

Відповіді:

26 за відповідь № 1

The --recursive прапор призначений для роботи в каталогах. Якби ви перейшли глобус, який відповідає каталогам, то ці каталоги будуть рецензуватися рекурсивно, але якщо ви передасте глобус, який відповідає файлам, як ви робите, то --recursive є неефективним. Я б запропонував не використовувати --recursive з глобусом, оскільки глобуси вже мають можливість рекурсивно переглядати підкаталоги. Ви можете зробити:

mocha "src/app/**/*.tests.js"

Це відповідатиме усім файлам, які відповідають *.tests.js рекурсивно в src/app. Зверніть увагу, як я використовую одинарні лапки навколовізерунок. Це потрібно, щоб процитувати шаблон, щоб він передався як-є глобальному коду Mocha. Інакше ваша оболонка може інтерпретувати його. Деякі оболонки, залежно від варіантів, перекладуть ** в * і ви не отримаєте бажаних результатів.