По мере роста вашего набора тестов Karma / Mocha он будет становиться все медленнее и медленнее. Бывают случаи, когда вы можете захотеть провести какой-то конкретный тест или тесты. Некоторое время я задавался вопросом, как этого добиться, и, наконец, сделал небольшой прорыв. Я закончил с таким синтаксисом после того, как закончил:
npm test -- suite/test name to match goes here npm run test:tdd -- suite/test name to match goes here
В качестве альтернативы времени выполнения вы можете аннотировать свой код с помощью .only (то есть описывать.only или it.only). Mocha подберет это и выполнит буквально только те наборы или тесты. Только убедитесь, что вы не совершаете такого рода изменения. Спасибо за подсказку Кевин Лэмпинг!
Установка
Поскольку я предполагаю, что вы уже можете настроить Karma / Mocha, я остановлюсь только на интересных частях. Есть два места для настройки.
Прежде всего, вы должны сделать двойной рывок в конце ваших вызовов кармы, как это. Без этого он будет передавать возможные дополнительные параметры, которые мы передаем напрямую Karma, и именно этого мы хотим избежать. Вместо этого мы сами проанализируем argv и передадим его Mocha. Настройте свои тестовые цели следующим образом:
package.json
{ ... “scripts”: { ... “test”: “karma start --“, “test:tdd”: “karma start --auto-watch --no-single-run --“, ... } ... }
Чтобы завершить настройку, мы должны захватить argv в конфигурации Karma и затем передать его в karma через параметр grep. Это разблокирует силу, которую мы хотим:
karma.conf.js
module.exports = function karmaConfig(config) { ... client: { args: parseTestPattern(process.argv) }, ... } function parseTestPattern(argv) { var found = false; var pattern = argv.map(function(v) { if (found) { return v; } if (v === '--') { found = true; } }). filter(function(a) { return a }). join(' '); return pattern ? ['--grep', pattern] : []; }
Вспомогательная функция захватывает переданный argv и создает из них строку. Это дает нам желаемый синтаксис.
Более простой альтернативой было бы разрешить просто формат типа «не дает сбой с числом», но тогда вы должны не забыть писать эти «s» при запуске тестов.
Вы можете найти полную настройку в моем шаблоне компонента React.
Вывод
Учитывая, что это основная потребность в тестировании, вполне вероятно, что я упускаю что-то очевидное, поскольку для этого потребовалось больше строк кода, чем мне хотелось бы. Если вы знаете способ получше, дайте мне знать!