Как заставить мокко выполнить тесты во всех подпапках рекурсивно? - PullRequest
0 голосов
/ 21 февраля 2019

Мои тесты сгруппированы в папки, например:

test/
├── unit/
├── integration/
└── acceptance/

В каждой из указанных выше папок есть несколько тестовых файлов (например, test.js)

Iвыполнить мои разные тестовые наборы с помощью следующих команд:

mocha test/unit/**/*.js
mocha test/integration/**/*.js
mocha test/acceptance/**/*.js

Я недавно решил добавить подпапку к test/unit, чтобы немного упорядочить вещи:

test/
└── unit/
    ├── subfolder/
    │   └── new.test.js
    ├── foo.test.js
    └── bar.test.js

Но теперь mocha выполняет только тесты в new.test.js.

Я думал, /**/*.js означало, что он будет рекурсивно искать во всех папках файлы .js, но это не то поведение, которое я вижу.Это ошибка или недоразумение с моей стороны?

1 Ответ

0 голосов
/ 21 февраля 2019

Обернув те же самые шаблоны в кавычки, mocha будет разрешать шаблоны, а не bash:

"scripts": {
  "test:unit": "mocha \"test/unit/**/*.js\""
}

К счастью, mocha разрешит шаблон, как и ожидалось, и найдет рекурсивновсе .js файлы в test/unit, включая любой уровень подпапок.

TL; DR Нет необходимости читать дальше, если только вы не пытаетесь сделать что-то подобное с чем-то другимчем mocha.Ниже показано, как далеко я продвинулся при сопоставлении шаблонов файлов bash:

Без кавычек я не смог заставить его работать более чем на двух уровнях в то время:

mocha test/unit/**

Вышеуказанное соответствует всем файлам в test/unit и первом уровне подпапок, но это будет соответствовать любому файлу, а не только .js

mocha test/unit/{,**/}*.js

Теперь мы сопоставляем только .jsфайлы, но все еще только в test/unit и первом уровне подпапок.

...