Błąd: musisz dołączyć adapter, który implementuje metodę __karma __. Start

91

Próbuję dodać testy jednostkowe do jednego z moich projektów.

Do tej pory zainstalowałem i skonfigurowałem karmę oraz zainstalowałem jaśmin. Mam jeden plik testowy w moim test/folderze.

Serwer karma został uruchomiony, strona przeglądarki jest gotowa, ale karma runkończy się niepowodzeniem w następujący sposób:

$ karma run karma-conf.js 
[2014-06-14 15:19:11.046] [DEBUG] config - Loading config /foo/test/karma-conf.js
Waiting for previous execution...
Chrome 35.0.1916 (Linux) ERROR
  You need to include some adapter that implements __karma__.start method!

Ten komunikat o błędzie nie jest dobrze Google.

Czy jest to coś oczywistego, czy muszę podać więcej informacji?

Drew Noakes
źródło
2
Chciałbym zauważyć, że otrzymuję ten błąd z powodu błędów składni preprocesora, których na początku nie zauważyłem.
BradGreens,

Odpowiedzi:

73

Wygląda na to, że jest to bardzo ogólny błąd, jednak w moim przypadku problem polegał na tym, że albo nie uruchomiłem karma startz właściwego folderu, albo nie uruchomiłem go ponownie po zmianie konfiguracji.

Zostawię to pytanie otwarte i mam nadzieję, że może ono stać się źródłem informacji dla innych osób, które napotkają ten komunikat o błędzie.

Drew Noakes
źródło
26
Dla mnie to samo - bieganie karma start test/karma.conf.jszałatwiło sprawę. Właściwy katalog może być inny dla Ciebie.
Jason
3
Otrzymałem ten błąd podczas dodawania preprocesorów: {'src / ** / *. Js': ['babel']}, jakieś pomysły?
SuperUberDuper
5
Dla mnie zmiana, test/**/*.{js,jsx}aby test/**/*.+(js|jsx)naprawić ten błąd. Jakie to dziwne!
jałowiec
1
Również taki błąd może się pojawić, jeśli konfiguracja karmy zawiera literówkę
sergolius
28

Jeśli nazwiesz swój plik konfiguracyjny karmy karma.conf.js, możesz po prostu wpisać karma start.

W przeciwnym razie podaj nazwę pliku karma start karmafile.js

(Byłem we właściwym katalogu, ale nie określałem nazwy pliku).

James Lawruk
źródło
13

Musisz uruchomić swoją karma runlub inną funkcję w folderze, w którym znajduje się karma-conf.js.

AndyX
źródło
To nie wydaje się właściwe. Jeśli uruchomię karma startw srcpodfolderze, w którym się karma.conf.jsznajduje, pojawia się błąd[karma-server]: Server start failed on port 9876: Error: The '@angular-devkit/build-angular/plugins/karma' karma plugin is meant to be used from within Angular CLI and will not work correctly outside of it.
BaltoStar
7

W moim przypadku musiałem zmienić nazwę pliku na karma.conf.js, a następnie uruchomić karmę

Rafael Fernandes
źródło
6

Miałem problem z karma.conf.jsformatem kodu pliku:

files: [
    // Modules
    ,"client/bower_components/angular/angular.min.js"
    ,"client/bower_components/angular-mocks/angular-mocks.js"
    // App
    ,"client/app/app.module.js"
    // Test
    // ,"test/**/*.spec.js"
],

Dodatkowy przecinek w filestablicy spowodował ten błąd:

You need to include some adapter that implements __karma__.start method!
Jaroslav
źródło
6

Nie uruchamiałem polecenia uruchomienia karmy ze ścieżki, na której znajdował się mój karma.conf.js. Przełączyłem się do tego folderu i uruchomiłem to samo polecenie. To wszystko

Sunil Garg
źródło
4

Miałem do czynienia z tym problemem podczas uruchamiania specyfikacji w bazie kodu Angular.js. Musiałem biec, npm install karma-jasmine -gżeby to zadziałało.

HariKrishnan
źródło
3

Jeśli wpiszesz „karma start”, musisz mieć plik karma.conf.js w bieżącym folderze. lub po prostu „karma start /path/karma.conf.js”

Spróbuj utworzyć nowy karmar.conf.js przez „karma init /path/karma.conf.js”

Mike Zhang
źródło
2

W moim przypadku przez pomyłkę aplikowałem preprocesor commonjs do karma-*modułów i adapter.jsfrom karma-chromei w karma-firefoxten sposób został uszkodzony.

Niestety jest to bardzo ogólny błąd.

Adrian Ber
źródło
Czy możesz podać więcej informacji na temat poprawki, którą zrobiłeś? To może mnie teraz dopaść, ponieważ wiem, że używam karma-chrome. Dzięki!
daniel.caspers
Czy stosujesz preprocesor commonjs (czy jest skonfigurowany w programie karma runner)? Jeśli tak, upewnij się, że nie jest to stosowane do plików w modułach karma- *.
Adrian Ber
2

Otrzymałem ten sam błąd, ponieważ projekt korzystał z Babel 6 i zapomniałem dodać plik babelrc. Udostępnianie na wypadek, gdyby to mogło pomóc.

Brett
źródło
2

W moim przypadku komunikat był w istocie bardzo opisowy: zapomniałem dodać adapter, w moim przypadku Jasmine, do pliku konfiguracyjnego. A zatem:

module.exports = function(config) {
  config.set({
      browsers: ['Chrome'],
      singleRun: true,
      frameworks: ['jasmine'],
      files: [
          // ... files ...
      ],
      // other configs
    });
};
Jan Prichystal
źródło
2

Musisz skonfigurować swój plik „my.conf.js”, ponieważ zawiera on wszystkie informacje potrzebne do przetestowania kodu.

Wszystko, co musisz napisać, to:

Plik konfiguracyjny można wygenerować za pomocą karma init:

$ karma init my.conf.js

Którego frameworka testowego chcesz użyć? Naciśnij klawisz Tab, aby wyświetlić listę możliwych opcji. Enter, aby przejść do następnego pytania.

jaśmin

Czy chcesz używać Require.js? Spowoduje to dodanie wtyczki Require.js. Naciśnij klawisz Tab, aby wyświetlić listę możliwych opcji. Enter, aby przejść do następnego pytania.

Nie

Czy chcesz automatycznie przechwytywać przeglądarkę? Naciśnij klawisz Tab, aby wyświetlić listę możliwych opcji. Wpisz pusty ciąg, aby przejść do następnego pytania.

Chrom

Jaka jest lokalizacja plików źródłowych i testowych? Możesz użyć wzorców glob, np. „js / *. js” lub „test / ** / * Spec.js”. Naciśnij Enter, aby przejść do następnego pytania.

* .js test / ** / *. js

Czy należy wykluczyć którykolwiek z plików zawartych w poprzednich wzorach? Możesz użyć wzorców glob, np. „** / *. swp”.

Naciśnij Enter, aby przejść do następnego pytania.

Czy chcesz, aby Karma obejrzała wszystkie pliki i przeprowadzała testy po zmianie? Naciśnij klawisz Tab, aby wyświetlić listę możliwych opcji.

tak

Plik konfiguracyjny wygenerowany w „/Users/vojta/Code/karma/my.conf.js”.

Juan Manuel Guerrero Hernández
źródło
1

Muszę dodać, że w moim przypadku karma dawała mi błąd, ponieważ miałem [kwadratowe] nawiasy w nazwie jednego z nadrzędnych folderów.

Yura
źródło
1

Przydarzył mi się ten sam problem, a wynikało to z przestarzałego modułu.

Uruchomienie npm updatego rozwiązało.

Magicprog.fr
źródło
1

Narzeka na przejściówkę, która prawdopodobnie jest jaśminowa lub mokka. Albo brakuje adaptera, albo nie jest on poprawnie skonfigurowany, albo jest to przestarzała lub wadliwa wersja adaptera.

W moim przypadku miałem starą wersję mokki 2.5.3, która nie była kompatybilna z karmą 1+. Zaktualizowałem zależność mokka do najnowszej dostępnej wersji 3.2.0 i problem został rozwiązany.

Giorgio
źródło
1

Podczas pracy nad wieloma niejasno opisanymi błędami próbowałem ustawić basePath: '../', Po poprawieniu innych błędów (takich jak brakujące przecinki, które zostały opisane jako błędy zawartości obiektu) ostatnia zmiana z powrotem na basePath: '', spowodowała, że ​​karma działała. Komunikaty błędów karmy wymagają dużo pracy. Nie jest łatwo to uruchomić.

Mike_Laird
źródło
1

Miałem ten sam problem. Moja przeglądarka otwierała się, ale na moim terminalu wyrzuciła następujący błąd

30 08 2017 11:19:28.272:INFO [Chrome 58.0.3029 (Linux 0.0.0)]: Connected `enter code here`on socket 5sSs6E5KmpUVRp6LAAAB with id 93886631
Chrome 58.0.3029 (Linux 0.0.0) ERRORSome of your tests did a full page reload!

Sprawdziłem mój plik karma.conf.js. W tablicy ramowej umieściłem jaśmin i requirejs. Ale zainstalowałem tylko karma-jaśmin. Usunięcie requireJS i ponowne uruchomienie karmy działało!

CoolNiks
źródło
1

Będziesz musiał określić katalog, w karma.config.jsktórym uruchomisz start karma.

Próbować

karma start karma.config.js

Paschalidis Christos
źródło
1

Miałem złą konfigurację „plików” w moim karma.conf.js

files: ['**/*.js'],

to złapało wszystkie pliki w node_modules / w tym te z wtyczki karma-jasmine, ponieważ było postrzegane jako pliki źródłowe, które nie były ładowane podczas uruchamiania. Zmiana na

files: [
        'src/*.js',
        'spec/*.js'
    ],

rozwiązał problem w moim przypadku

Johan Martinsson
źródło
0

FWIW - pozyskiwanie ścieżki do pliku karma.conf.jsdziałało dla mnie lokalnie, ale nie w moim konstruktorze Jenkins. Nie mam pojęcia, dlaczego tak jest, ale na jenkins wyrzucał ten błąd, chyba że karma.conf.jsplik znajdował się w katalogu głównym, w którym podano polecenie karmy. Używam railsów i uruchamiam specyfikacje js przez zadanie rake. Poniżej znajduje się kod, który może być pomocny dla niektórych.

https://gist.github.com/daino3/a39486ff8bfc1668e923

daino3
źródło
0

Problem w moim przypadku polegał na tym, że karma nie odebrała żadnych plików. Naprawienie tego w karma.conf.js rozwiązało problem.

Andras Hatvani
źródło
0

W moim przypadku nie było to w ogóle związane z karmą! Uruchamiam karmę z łyka, z ES6 / babel i faktycznie wystąpił błąd składni kodu, oznaczony błędem babel nad moją karmą:

BŁĄD [preprocessor.babel]: xxx.js: Nieoczekiwany token (19:83)

Naprawiłem to w moim src i karma była znowu szczęśliwa.

Merl
źródło
0

Ja też się z tym zmagałem. Doszedłem do wniosku, że ten błąd występuje z jednego z następujących powodów

Mój problem polegał na tym, że mój plik konfiguracyjny został nazwany karma.config.jszamiast karma.conf.js.

Jeśli zainstalowałeś adapter testowy, ale nadal nie działa, spróbuj uruchomić karma initi przejść przez konfigurację z przewodnikiem.

kontrollanten
źródło
0

W moim przypadku nazwa pliku konfiguracyjnego była inna . Tak więc uruchomienie polecenia określającego plik conf rozwiązało mój problem.

>> karma start unit-tests.conf.js
No captured browser, open http://localhost:9876/
...

W przypadku „PhantomJS” otwarcie podanego linku ( localhost: 9876 ) w przeglądarce powoduje wykonanie przypadków testowych.

Mam nadzieję, że to pomoże. :)

EDYCJA 1: Mój plik konfiguracyjny Karmy

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      './node_modules/angular/angular.js',
      './node_modules/angular-ui-router/release/angular-ui-router.js',
      './node_modules/angular-mocks/angular-mocks.js',
      './app/services/users/users.js',
      './app/app.js',
      './app/services/users/users.spec.js'
    ],


    // list of files to exclude
    exclude: [
    ],


    // preprocess matching files before serving them to the browser
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['spec'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}
Naveen Kumar V
źródło
0

Otrzymałem ten błąd, ponieważ dwukrotnie wymagałem tej samej zależności!

Usunięcie zduplikowanej zależności pliku spowodowało usunięcie błędu. Zakreślone na niebiesko poniżej.

wprowadź opis obrazu tutaj

John Vandivier
źródło
0

Musisz określić plik konfiguracyjny karmy na karma.

karma start karma.config.js 

Mi to pasuje

Steve KACOU
źródło