Карма: Запуск одного тестового файлу з командного рядка


93

Отже, я все це шукав, знайшов тут "подібні" відповіді, але не зовсім те, що я хочу.

Прямо зараз, якщо я хочу протестувати один файл із кармою, мені потрібно це зробити fit(), fdescribe()про відповідний файл ...

Однак, що я хочу, це мати можливість просто викликати karma за допомогою конфігураційного файлу і направити його до певного файлу, тому мені взагалі не потрібно змінювати файл, тобто:

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

чи можна це зробити? Або з яким-небудь помічником? (за допомогою бурчання або ковтка?)


1
Пробували karma run -- --grep=testDescriptionFilter? Я бачив це раніше, але не можу з перших рук перевірити, чи це працює. (Якби я був удома, я спробував би, перш ніж робити пропозиції. Оскільки я не можу спробувати - я коментую, а не відповідаю.) :)
bvaughn

1
хіба це не лише для конкретного it? Немає можливості використовувати його для файлу?
Gonçalo Vieira

3
Чесно кажучи, я завжди просто модифікував karma.conf, якщо хочу зосередитись на одному тестовому файлі. Зробити це досить просто, я ніколи не витрачав зусиль на пошук швидшого шляху.
bvaughn

1
Хот-дог. Радий, що це допомогло. Опубліковано. :)
bvaughn

Відповіді:


59

Спочатку потрібно запустити сервер karma з

karma start

Потім ви можете використовувати grep для фільтрації певного тесту або опису блоку:

karma run -- --grep=testDescriptionFilter

12
Ця відповідь має сказати , що ви повинні бути karmaзапущені з karma startперед запускомkarma run
etagwerker

4
Я насправді не вважаю, що це необхідно, враховуючи те, що задається питання про те, як фільтрувати за допомогою karma run. Здавалося досить чітким, що плакат знав, як запустити Карма і запустити всі тести, і просто шукав синтаксис щодо фільтрації.
bvaughn

2
Що я можу зробити, якщо хочу, щоб це відбувалося програмно? Тобто я б не знав опису файлу, який змінився, але я б знав його назву.
MPV

3
Здається, це рішення взагалі не працює з тестами на жасмин (карма-жасмин). А запуск карми --help взагалі не відображає --grep як опцію команди. Я використовую Karma latest (там написано 1.5.0).
Явін5

10
це не запускає жодного тесту!
eav

16

Незважаючи на те --files, що більше не підтримується, ви можете використовувати змінну env, щоб надати список файлів:

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

Тоді в CLI:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run

1
У підсумку це чудово працює! Просто переконайтеся, що у вашому глобусі за замовчуванням є назва каталогу на передній панелі, інакше ви отримаєте помилку з шаблоном. Крім того, я змінив свої файли: визначення таким чином: files: [] .concat (getSpecs (process.env.KARMA_SPECS)), і це в кінцевому підсумку працювало краще, оскільки функція вже розміщує там шаблон glob, якщо немає змінної середовища встановити. О, і я не думаю, що вам потрібен "env" на передній панелі команди (він працює для мене без цього). Дякуємо за це рішення @Yuriy Kharchenko!
Yavin5,

6

Цей параметр більше не підтримується в останніх версіях карми:

див. https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

Масив файлів можна перевизначити, використовуючи CLI як такий:

karma start --files=Array("test/Spec/services/myServiceSpec.js")

або втік:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

Список літератури


2
видає мені цю помилку - bash: синтаксична помилка біля несподіваного маркера `('
Lakshay

5
отже, коли я спробую це, я отримую таку помилку:, config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve))яка може бути пов’язана з тим, що я використовую requireJS?
Gonçalo Vieira

1
е-е, не через requireJS, з якоїсь дивної причини карма не читає Array ("zzz") як JS Array? O_o
Gonçalo Vieira

2
нм, здається, що карма більше не підтримує аргумент --files?
Gonçalo Vieira

23
Попередження для всіх, хто приходить сюди, ця опція більше не підтримується в кармі: github.com/karma-runner/karma/issues/…
гідний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.