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

94

Итак, я искал это повсюду, нашел здесь «похожие» ответы, но не совсем то, что мне нужно.

Прямо сейчас , если я хочу , чтобы проверить один файл с кармой, мне нужно сделать fit(), fdescribe()на файл в вопросе ...

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

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

Можно ли это сделать? Или с любым помощником? (используя ворчание или глоток?)

Гонсалу Виейра
источник
1
Пробовали karma run -- --grep=testDescriptionFilter? Я видел, как это предлагалось раньше, но я не могу воочию убедиться, что это работает. (Если бы я был дома, я бы попробовал, прежде чем предлагать. Поскольку я не могу попробовать - я комментирую вместо ответа.)
bvaughn
1
разве это не для конкретного it? Нет возможности использовать его для файла?
Гонсалу Виейра,
3
Честно говоря, я всегда просто модифицировал karma.conf, если хочу сосредоточиться на одном тестовом файле. Сделать это достаточно просто, и я никогда не тратил усилия на то, чтобы найти более быстрый способ.
bvaughn
1
Хотдог. Рад, что помог. Размещено. :)
bvaughn
1
Связанный вопрос: stackoverflow.com/questions/26552729/karma-run-single-test/…
Стефан

Ответы:

59

Сначала вам нужно запустить сервер кармы с

karma start

Затем вы можете использовать grep для фильтрации определенного теста или описания блока:

karma run -- --grep=testDescriptionFilter
бвон
источник
12
В этом ответе должно быть сказано, что перед бегом вы должны были karmaпробежать с помощьюkarma startkarma run
etagwerker
4
Я не думаю, что это необходимо, учитывая, что вопрос о том, как фильтровать karma run. Казалось довольно очевидным, что плакат знал, как запустить Karma и запустить все тесты, и просто искал синтаксис для фильтрации.
bvaughn
2
Что мне делать, если я хочу, чтобы это происходило программно? Т.е. я бы не знал описания измененного файла, но знал бы его имя файла.
MPV
3
Это решение, похоже, вообще не работает с тестами на жасмин (карма-жасмин). И команда karma run --help вообще не показывает --grep как параметр команды. Я использую последнюю версию Karma (там написано 1.5.0).
Yavin5 03
11
это не запускает ни одного теста!
eav 06
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: следующим образом: files: [] .concat (getSpecs (process.env.KARMA_SPECS)), и это в конечном итоге сработало лучше, потому что функция уже помещает туда шаблон глобуса, если переменная среды не задавать. О, и я не думаю, что вам нужно "env" в начале команды (у меня это работает без этого). Спасибо за это решение @ Юрий Харченко!
Yavin5 02
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: синтаксическая ошибка рядом с неожиданным токеном `('
Лакшай
5
поэтому, когда я пытаюсь это сделать, я получаю следующую ошибку:, config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve))которая может быть связана с тем, что я использую requireJS?
Gonçalo Vieira
1
эм, не из-за requireJS, по какой-то странной причине карма не читает Array ("zzz") как JS Array? О_о
Гонсалу Виейра
2
nm, похоже, что karma больше не поддерживает параметр --files arg?
Gonçalo Vieira
23
Предупреждение для всех, кто приходит сюда, эта опция больше не поддерживается в карме: github.com/karma-runner/karma/issues/…
dignifiedquire