Karma: Komut satırından tek bir test dosyası çalıştırma


94

Yani, her yerde bunu arıyordum, burada "benzer" cevaplar buldum, ama tam olarak istediğim şey değil.

Şu anda karma ile tek bir dosya test etmek istiyorsanız, yapmam gereken fit(), fdescribe()söz konusu dosya üzerinde ...

Ancak, istediğim şey yapılandırma dosyasıyla sadece karma diyebilmek ve onu belirli bir dosyaya yönlendirebilmek, böylece dosyayı hiç değiştirmem gerekmiyor, yani:

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

bunu yapmak mümkün mü? Veya herhangi bir yardımcıyla mı? (homurtu mu yoksa yudum mu?)


1
Denedin karma run -- --grep=testDescriptionFiltermi? Bunun daha önce önerildiğini görmüştüm, ancak çalıştığını ilk elden doğrulayamıyorum. (Evde olsaydım, önermeden önce
denerdim

1
bu sadece belirli bir şey için değil itmi? Bir dosya için kullanma imkanı yok mu?
Gonçalo Vieira

3
Dürüst olmak gerekirse, tek bir test dosyasına odaklanmak istersem her zaman karma.conf dosyasını değiştirdim. Bunu yapmak yeterince kolay, daha hızlı bir yol bulmak için hiç çaba harcamadım.
bvaughn

1
Sosisli. Yardımcı olmasına sevindim. Gönderildi. :)
bvaughn

Yanıtlar:


59

Öncelikle karma sunucusunu başlatmanız gerekir.

karma start

Ardından, belirli bir testi filtrelemek veya bloğu tanımlamak için grep'i kullanabilirsiniz:

karma run -- --grep=testDescriptionFilter

12
Bu cevap size gerektiğini demeliyim karmaile çalışan karma startçalıştırmadan öncekarma run
etagwerker

4
Sorunun nasıl filtreleneceği sorulduğu düşünüldüğünde bunun gerçekten gerekli olduğunu düşünmüyorum karma run. Posterin Karma'yı nasıl başlatacağını ve tüm testleri nasıl çalıştıracağını bildiği ve sadece filtrelemeyle ilgili sözdizimini aradığı oldukça açık görünüyordu.
bvaughn

2
Bunun programlı olarak gerçekleşmesini istersem ne yapabilirim? Yani değişen dosyanın açıklamasını bilmezdim, ama dosya adını bilirdim.
MPV

3
Bu çözüm Jasmine testleriyle (karma-yasemin) hiç işe yaramıyor gibi görünüyor. Ve karma run --help, komut seçeneği olarak --grep'i göstermez. En son Karma kullanıyorum (1.5.0 diyor).
Yavin5

11
bu tek bir test çalıştırmaz!
17:37

16

Olsa --filesartık desteklenmiyor, dosyaların bir listesini sağlamak için bir env değişkeni kullanabilirsiniz:

// 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))
  });
});

Ardından CLI'de:

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

1
Bu harika çalışıyor! Varsayılan glob'unuzun önünde bir dizin adı olduğundan emin olun, yoksa bir kalıp hatası alırsınız. Ayrıca, dosyalarımı şu şekilde değiştirdim: tanım: dosyalar: [] .concat (getSpecs (process.env.KARMA_SPECS)), Ve bu daha iyi çalışmaya başladı çünkü hiçbir ortam değişkeni yoksa işlev zaten glob kalıbına koyuyor Ayarlamak. Oh, ve komutun önündeki "env" 'e ihtiyacınız olduğunu sanmıyorum (o olmadan benim için çalışıyor). Bu çözüm için teşekkürler @Yuriy Kharchenko!
Yavin5

6

Bu seçenek artık karmanın son sürümlerinde desteklenmemektedir:

bkz. https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054

Files dizisi CLI kullanılarak şu şekilde yeniden tanımlanabilir:

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

veya kaçtı:

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

Referanslar


2
bana bu hatayı veriyor - bash: beklenmedik belirteç yakınında sözdizimi hatası `` ('
Lakshay

5
yani, bunu denediğimde aşağıdaki hatayı alıyorum: bu config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve)), requireJS kullanmamdan kaynaklanıyor olabilir?
Gonçalo Vieira

1
erm, requiredJS'den değil, tuhaf bir nedenden dolayı karma, Array'i ("zzz") JS Array olarak okumuyor mu? O_o
Gonçalo Vieira

2
nm, öyle görünüyor ki karma artık bir --files arg?
Gonçalo Vieira

23
Burada bu seçeneği gelecek herkes için uyarı artık desteklenir karma: github.com/karma-runner/karma/issues/...
dignifiedquire
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.