Fehler: Sie müssen einen Adapter einbinden, der die Startmethode __karma __. Implementiert

91

Ich versuche, einem meiner Projekte einige Komponententests hinzuzufügen.

Bisher habe ich Karma installiert und konfiguriert und Jasmin installiert. Ich habe eine Testdatei in meinem test/Ordner.

Der Karma-Server wurde gestartet, die Browserseite ist bereit, karma runschlägt jedoch wie folgt fehl:

$ 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!

Diese Fehlermeldung funktioniert nicht gut bei Google.

Ist das etwas Offensichtliches oder muss ich weitere Informationen bereitstellen?

Drew Noakes
quelle
2
Ich wollte feststellen, dass ich diesen Fehler aufgrund von Präprozessorsyntaxfehlern erhielt, die ich zuerst nicht bemerkt hatte.
BradGreens

Antworten:

73

Es scheint, dass dies ein sehr allgemeiner Fehler ist. In meinem Fall bestand das Problem jedoch entweder darin, dass ich nicht karma startaus dem richtigen Ordner ausgeführt habe oder dass ich ihn nach dem Ändern der Konfiguration nicht neu gestartet habe.

Ich lasse diese Frage offen und hoffe, dass sie eine Ressource für andere sein kann, bei denen diese Fehlermeldung auftritt.

Drew Noakes
quelle
26
Das gleiche gilt für mich - Laufen karma start test/karma.conf.jshat den Trick für mich getan. Das richtige Verzeichnis kann für Sie unterschiedlich sein.
Jason
3
Ich habe diesen Fehler beim Hinzufügen von Präprozessoren erhalten: {'src / ** / *. Js': ['babel']}, irgendwelche Ideen?
SuperUberDuper
5
Für mich ändert test/**/*.{js,jsx}an test/**/*.+(js|jsx)dieser Fehler behoben. Wie bizarr!
Wacholder
1
Ein solcher Fehler kann auch auftreten, wenn die Karma-Konfiguration Tippfehler hat
Sergolius
28

Wenn Sie Ihre Karma-Konfigurationsdatei benennen karma.conf.js, können Sie einfach eingeben karma start.

Andernfalls geben Sie den Dateinamen an karma start karmafile.js

(Ich war im richtigen Verzeichnis, habe aber keinen Dateinamen angegeben.)

James Lawruk
quelle
13

Sie müssen Ihre karma runoder eine andere Funktion in dem Ordner ausführen, in dem sich karma-conf.js befindet.

AndyX
quelle
Das scheint nicht richtig zu sein. Wenn ich karma startin einem srcUnterordner laufe, in dem sich das karma.conf.jsbefindet, erhalte ich eine Fehlermeldung[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

In meinem Fall musste ich die Datei in karma.conf.js umbenennen und dann karma starten

Rafael Fernandes
quelle
6

Ich hatte ein Problem mit dem karma.conf.jsDateicodeformat:

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"
],

Das zusätzliche Komma im filesArray hat diesen Fehler verursacht:

You need to include some adapter that implements __karma__.start method!
Jaroslav
quelle
6

Ich habe den Karma- Startbefehl nicht von dem Pfad aus ausgeführt, auf dem sich meine karma.conf.js befand. Ich wechselte zu diesem Ordner und führte den gleichen Befehl aus. Das ist alles

Sunil Garg
quelle
4

Ich war mit diesem Problem konfrontiert, als ich Spezifikationen für die Angular.js-Codebasis ausführte. Ich musste rennen npm install karma-jasmine -g, um das zum Laufen zu bringen.

HariKrishnan
quelle
3

Wenn Sie "karma start" eingeben, muss sich im aktuellen Ordner eine Datei "karma.conf.js" befinden. oder einfach "karma start /path/karma.conf.js"

Versuchen Sie, eine neue karmar.conf.js mit "karma init /path/karma.conf.js" zu erstellen.

Mike Zhang
quelle
2

In meinem Fall wurde die Anwendung ich Fehler durch die Commonjs Vorprozessor auf die karma-*Module und die adapter.jsaus karma-chromeund karma-firefoxwurde auf diese Weise gebrochen.

Leider ist dies ein sehr allgemeiner Fehler.

Adrian Ber
quelle
Könnten Sie mehr Hintergrundinformationen zu Ihrem Fix liefern? Dies könnte mich jetzt dazu bringen, da ich weiß, dass ich Karma-Chrom verwende. Vielen Dank!
daniel.caspers
Wenden Sie den CommonJS-Präprozessor an (ist er im Karma Runner konfiguriert)? Wenn ja, stellen Sie sicher, dass es nicht auf die Dateien in den Karma- * Modulen angewendet wird.
Adrian Ber
2

Ich habe den gleichen Fehler erhalten, weil das Projekt Babel 6 verwendete und ich vergessen hatte, die babelrc-Datei hinzuzufügen. Nur teilen, falls dies helfen könnte.

Brett
quelle
2

In meinem Fall war die Nachricht tatsächlich sehr beschreibend: Ich habe vergessen, der Konfigurationsdatei einen Adapter hinzuzufügen, in meinem Fall Jasmine. So:

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

Sie müssen Ihre Datei "my.conf.js" konfigurieren, da sie alle Informationen enthält, die zum Testen Ihres Codes verwendet werden können.

Alles was Sie schreiben müssen ist Folgendes:

Die Konfigurationsdatei kann mit karma init generiert werden:

$ karma init my.conf.js

Welches Testframework möchten Sie verwenden? Drücken Sie die Tabulatortaste, um mögliche Optionen aufzulisten. Geben Sie ein, um zur nächsten Frage zu gelangen.

Jasmin

Möchten Sie Require.js verwenden? Dadurch wird das Require.js-Plugin hinzugefügt. Drücken Sie die Tabulatortaste, um mögliche Optionen aufzulisten. Geben Sie ein, um zur nächsten Frage zu gelangen.

Nein

Möchten Sie einen Browser automatisch erfassen? Drücken Sie die Tabulatortaste, um mögliche Optionen aufzulisten. Geben Sie eine leere Zeichenfolge ein, um zur nächsten Frage zu gelangen.

Chrom

Wo befinden sich Ihre Quell- und Testdateien? Sie können Glob-Muster verwenden, z. "js / *. js" oder "test / ** / * Spec.js". Drücken Sie die Eingabetaste, um zur nächsten Frage zu gelangen.

* .js test / ** / *. js

Sollte eine der in den vorherigen Mustern enthaltenen Dateien ausgeschlossen werden? Sie können Glob-Muster verwenden, z. "** / *. swp".

Drücken Sie die Eingabetaste, um zur nächsten Frage zu gelangen.

Möchten Sie, dass Karma alle Dateien überwacht und die Tests bei Änderungen ausführt? Drücken Sie die Tabulatortaste, um mögliche Optionen aufzulisten.

Ja

Konfigurationsdatei generiert unter "/Users/vojta/Code/karma/my.conf.js".

Juan Manuel Guerrero Hernández
quelle
1

Ich muss hinzufügen, dass in meinem Fall Karma mir den Fehler gab, weil ich [eckige] Klammern im Namen eines der übergeordneten Ordner hatte.

Yura
quelle
1

Das gleiche Problem ist mir passiert und es lag an einem veralteten Modul.

Laufen hat es npm updategelöst.

Magicprog.fr
quelle
1

Tt beschwert sich über den Adapter, der wahrscheinlich Jasmin oder Mokka ist. Entweder fehlt der Adapter, entweder ist er nicht richtig eingerichtet, es handelt sich um eine veraltete oder fehlerhafte Version des Adapters.

In meinem Fall hatte ich eine alte Version von Mokka 2.5.3, die nicht mit Karma 1+ kompatibel war. Ich habe die Mokka-Abhängigkeit auf die neueste verfügbare Version 3.2.0 aktualisiert und das Problem behoben.

Giorgio
quelle
1

Während ich an zahlreichen vage beschriebenen Fehlern arbeitete, versuchte ich, basePath zu setzen: '../'. Nachdem ich andere Fehler (wie fehlende Kommas, die als Fehler beim Objektinhalt beschrieben wurden) korrigiert hatte, brachte die letzte Änderung von basePath: '' Karma zum Laufen. Karmas Fehleraussagen erfordern viel Arbeit. Es ist nicht einfach, es in Gang zu bringen.

Mike_Laird
quelle
1

Ich hatte das gleiche Problem. Mein Browser wurde geöffnet, aber auf meinem Terminal wurde der folgende Fehler ausgegeben

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!

Ich habe meine Datei karma.conf.js überprüft. In das Framework-Array hatte ich Jasmin und Requirejs aufgenommen. Aber ich hatte nur Karma-Jasmin installiert. Das Entfernen von requireJS und das erneute Ausführen des Karma-Starts funktionierten!

CoolNiks
quelle
1

Sie müssen das Verzeichnis von angeben karma.config.js Sie Startkarma ausführen.

Versuchen

karma start karma.config.js

Paschalidis Christos
quelle
1

Ich hatte eine schlechte 'Dateien'-Konfiguration in meiner karma.conf.js

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

Dies hat alle Dateien in node_modules / einschließlich derjenigen des Karma-Jasmin-Plugins erfasst, da es als Sourde-Dateien angesehen wurde, die beim Start nicht geladen wurden. Wechseln zu

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

löste das Problem in meinem Fall

Johan Martinsson
quelle
0

FWIW - Beschaffung des Dateipfads von karma.conf.jsarbeitete lokal für mich, aber nicht auf meinem Jenkins Builder. Ich habe keine Ahnung, warum dies der Fall ist, aber bei Jenkins wurde dieser Fehler ausgelöst, es sei denn, die karma.conf.jsDatei befand sich im Stammverzeichnis, in dem der Befehl karma gegeben wurde. Ich verwende Schienen und führe die js-Spezifikationen durch eine Rechenaufgabe. Der Code befindet sich unten, was für einige hilfreich sein kann.

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

daino3
quelle
0

Das Problem in meinem Fall war, dass Karma keine Dateien aufnahm. Das Problem wurde behoben, indem es in karma.conf.js behoben wurde.

Andras Hatvani
quelle
0

In meinem Fall hatte es überhaupt nichts mit Karma zu tun! Ich führe Karma von gulp mit ES6 / babel aus, und es gab tatsächlich einen Code-Syntaxfehler, der durch einen Babel-Fehler über meinem Karma gekennzeichnet ist:

FEHLER [preprocessor.babel]: xxx.js: Unerwartetes Token (19:83)

Ich habe das in meinem src behoben und Karma war wieder glücklich.

Merl
quelle
0

Ich habe auch damit zu kämpfen. Ich bin darauf gekommen, dass dieser Fehler aus einem der folgenden Gründe auftritt

Mein Problem war, dass meine Konfigurationsdatei karma.config.jsanstelle von benannt wurde karma.conf.js.

Wenn Sie die installiert haben Prüfadapter aber es funktioniert immer noch nicht funktioniert, versuchen Sie laufen karma initund die geführte Config Setup durchlaufen.

kontrollanten
quelle
0

In meinem Fall war der Name der Konfigurationsdatei anders . Das Ausführen des Befehls unter Angabe der conf- Datei hat mein Problem behoben.

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

Und für 'PhantomJS' werden die Testfälle ausgeführt, indem der angegebene Link ( localhost: 9876 ) im Browser geöffnet wird.

Ich hoffe es hilft. :) :)

EDIT 1: Meine Karma-Konfigurationsdatei

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.
quelle
0

Ich habe diesen Fehler erhalten, weil ich zweimal dieselbe Abhängigkeit benötigte!

Durch das Entfernen der Abhängigkeit von doppelten Dateien wurde der Fehler für mich behoben. Unten blau eingekreist.

Geben Sie hier die Bildbeschreibung ein

John Vandivier
quelle
0

Sie müssen die Karma-Konfigurationsdatei für Karma angeben .

karma start karma.config.js 

Für mich geht das

Steve KACOU
quelle