По мере роста вашего набора тестов 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.

Вывод

Учитывая, что это основная потребность в тестировании, вполне вероятно, что я упускаю что-то очевидное, поскольку для этого потребовалось больше строк кода, чем мне хотелось бы. Если вы знаете способ получше, дайте мне знать!