Karma: Uruchomienie pojedynczego pliku testowego z wiersza poleceń

93

Tak więc szukałem tego wszędzie, znalazłem tutaj „podobne” odpowiedzi, ale nie do końca to, czego chcę.

Teraz, jeśli chcę, aby przetestować jeden plik z karmą, co muszę zrobić fit(), fdescribe()na danego pliku ...

Jednak to, czego chcę, to móc po prostu wywołać karmę z plikiem konfiguracyjnym i skierować go do określonego pliku, więc nie muszę w ogóle modyfikować pliku, tj .:

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

czy można to zrobić? Lub z jakimkolwiek pomocnikiem? (używając chrząknięcia lub łyku?)

Gonçalo Vieira
źródło
1
Próbowałeś karma run -- --grep=testDescriptionFilter? Widziałem to już sugerowane, ale nie mogę z pierwszej ręki zweryfikować, czy działa. (Gdybym był w domu, spróbuję przed zasugerowaniem. Ponieważ nie mogę spróbować - komentuję zamiast odpowiadać.) :)
bvaughn
1
czy to nie jest tylko dla konkretnego it? Brak możliwości wykorzystania go do pliku?
Gonçalo Vieira,
3
Szczerze mówiąc, zawsze modyfikowałem karma.conf, jeśli chcę skupić się na jednym pliku testowym. To dość łatwe, że nigdy nie poświęciłem wysiłku, aby znaleźć szybszą drogę.
bvaughn
1
Hot dog. Cieszę się, że pomogło. Wysłano. :)
bvaughn

Odpowiedzi:

59

Najpierw musisz uruchomić serwer karmy z

karma start

Następnie możesz użyć grep, aby odfiltrować określony test lub opisać blok:

karma run -- --grep=testDescriptionFilter
bvaughn
źródło
12
Ta odpowiedź powinna powiedzieć, że powinieneś karmabiegać karma startprzed biegiemkarma run
etagwerker
4
Nie wydaje mi się to konieczne, biorąc pod uwagę, że pytanie dotyczy sposobu filtrowania karma run. Wydawało się całkiem jasne, że plakat wiedział, jak uruchomić Karmę i przeprowadzić wszystkie testy, i po prostu szukał składni dotyczącej filtrowania.
bvaughn
2
Co mogę zrobić, jeśli chcę, aby stało się to programowo? To znaczy nie znałbym opisu pliku, który się zmienił, ale poznałbym jego nazwę.
MPV
3
To rozwiązanie wydaje się w ogóle nie działać z testami jaśminu (karma-jaśmin). A polecenie karma --help w ogóle nie wyświetla opcji --grep jako polecenia. Używam najnowszej Karmy (mówi 1.5.0).
Yavin5
10
to nie uruchamia pojedynczego testu!
eav
16

Mimo że --filesnie jest już obsługiwany, możesz użyć zmiennej env, aby podać listę plików:

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

Następnie w CLI:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run
Yuriy Kharchenko
źródło
1
To kończy się świetnie! Po prostu upewnij się, że domyślna nazwa globu ma nazwę katalogu na początku, w przeciwnym razie pojawi się błąd wzorca. Zmieniłem również moje pliki: definicja w ten sposób: pliki: [] .concat (getSpecs (process.env.KARMA_SPECS)), I to skończyło się lepiej, ponieważ funkcja już wstawia tam wzorzec glob, jeśli nie ma zmiennej środowiskowej zestaw. Aha, i myślę, że nie potrzebujesz "env" z przodu polecenia (działa dla mnie bez tego). Dzięki za to rozwiązanie @Yuriy Kharchenko!
Yavin5
6

Ta opcja nie jest już obsługiwana w najnowszych wersjach karmy:

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

Tablicę plików można przedefiniować za pomocą interfejsu wiersza polecenia w następujący sposób:

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

lub uciekł:

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

Bibliografia

Paul Sweatte
źródło
2
daje mi ten błąd - bash: błąd składni w pobliżu nieoczekiwanego tokena `('
Lakshay
5
więc kiedy próbuję tego, pojawia się następujący błąd config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve)):, co może wynikać z faktu, że używam requireJS?
Gonçalo Vieira
1
erm, nie z powodu requireJS, z jakiegoś dziwnego powodu karma nie odczytuje tablicy Array ("zzz") jako tablicy JS? O_o
Gonçalo Vieira
2
nm, wygląda na to, że karma nie obsługuje już argumentu --files?
Gonçalo Vieira
23
Ostrzeżenie dla wszystkich przybycie tej opcji nie jest już obsługiwana w karma: github.com/karma-runner/karma/issues/...
dignifiedquire