Erreur: vous devez inclure un adaptateur qui implémente la méthode __karma __. Start

91

J'essaye d'ajouter des tests unitaires à l'un de mes projets.

Jusqu'à présent, j'ai installé et configuré karma, et j'ai installé jasmine. J'ai un fichier de test dans mon test/dossier.

Le serveur karma a démarré, la page du navigateur est prête, mais karma runéchoue comme suit:

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

Ce message d'erreur ne fonctionne pas bien sur Google.

Est-ce quelque chose d'évident ou dois-je fournir plus d'informations?

Drew Noakes
la source
2
Je voulais noter que je recevais cette erreur en raison d'erreurs de syntaxe du préprocesseur que je n'avais pas remarquées au début.
BradGreens

Réponses:

73

Il semble que ce soit une erreur très générale, mais dans mon cas, le problème était soit que je n'ai pas exécuté à karma startpartir du bon dossier, soit que je ne l'ai pas redémarré après avoir modifié la configuration.

Je vais laisser cette question ouverte et j'espère qu'elle pourra devenir une ressource pour les autres qui rencontrent ce message d'erreur.

Drew Noakes
la source
26
Pareil pour moi - la course a karma start test/karma.conf.jsfait l'affaire pour moi. Le bon répertoire peut être différent pour vous.
Jason
3
J'ai eu cette erreur lors de l'ajout de préprocesseurs: {'src / ** / *. Js': ['babel']}, des idées?
SuperUberDuper
5
Pour moi, changer test/**/*.{js,jsx}pour test/**/*.+(js|jsx)corriger cette erreur. Comme c'est bizarre!
genévrier-
1
Une telle erreur peut également apparaître si la configuration du karma a une faute de frappe
sergolius
28

Si vous nommez votre fichier de configuration karma karma.conf.js, vous pouvez simplement taper karma start.

Sinon, spécifiez le nom du fichier karma start karmafile.js

(J'étais dans le bon répertoire, mais je ne spécifiais pas de nom de fichier.)

James Lawruk
la source
13

Vous devez exécuter votre fonction karma runou une autre fonction dans le dossier où se trouve karma-conf.js.

AndyX
la source
Cela ne semble pas juste. Si je cours karma startdans le srcsous-dossier où karma.conf.jsse trouve, j'obtiens une erreur[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

Dans mon cas, j'ai dû renommer le fichier en karma.conf.js puis faire démarrer le karma

Rafael Fernandes
la source
6

J'ai eu un problème avec karma.conf.jsle format de code de fichier:

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

La virgule supplémentaire dans le filestableau a causé cette erreur:

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

Je n'exécutais pas la commande karma start à partir du chemin où se trouvait mon karma.conf.js. Je suis passé à ce dossier et j'ai exécuté la même commande. C'est tout

Sunil Garg
la source
4

J'étais confronté à ce problème lors de l'exécution des spécifications sur la base de code Angular.js. J'ai dû courir npm install karma-jasmine -gpour que cela fonctionne.

HariKrishnan
la source
3

Si vous tapez "karma start", vous devez avoir un fichier karma.conf.js dans le dossier courant. ou simplement "karma start /path/karma.conf.js"

Essayez de créer un nouveau karmar.conf.js par "karma init /path/karma.conf.js"

Mike Zhang
la source
2

Dans mon cas, j'appliquais par erreur le préprocesseur commonjs aux karma-*modules et au adapter.jsfrom karma-chromeet j'ai karma-firefoxété cassé de cette façon.

Malheureusement, c'est une erreur très générique.

Adrian Ber
la source
Pourriez-vous fournir plus d'informations sur le correctif que vous avez effectué? Cela pourrait m'attirer maintenant car je sais que j'utilise le karma-chrome. Merci!
daniel.caspers
Appliquez-vous le préprocesseur commonjs (est-il configuré dans karma runner)? Si oui, assurez-vous qu'il n'est pas appliqué aux fichiers dans les modules karma- *.
Adrian Ber
2

J'obtenais la même erreur car le projet utilisait Babel 6 et j'avais oublié d'ajouter le fichier babelrc. Juste partager au cas où cela pourrait aider.

Brett
la source
2

Dans mon cas, le message était en fait très descriptif: j'ai oublié d'ajouter un adaptateur, dans mon cas Jasmine, dans le fichier de configuration. Donc:

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

Vous devez configurer votre fichier "my.conf.js", car il contient toutes les informations à utiliser pour tester votre code.

Tout ce que vous devez écrire est ceci:

Le fichier de configuration peut être généré en utilisant karma init:

$ karma init my.conf.js

Quel framework de test souhaitez-vous utiliser? Appuyez sur tab pour lister les options possibles. Entrez pour passer à la question suivante.

jasmin

Voulez-vous utiliser Require.js? Cela ajoutera le plugin Require.js. Appuyez sur tab pour lister les options possibles. Entrez pour passer à la question suivante.

non

Voulez-vous capturer un navigateur automatiquement? Appuyez sur tab pour lister les options possibles. Entrez une chaîne vide pour passer à la question suivante.

Chrome

Quel est l'emplacement de vos fichiers source et de test? Vous pouvez utiliser des modèles globaux, par exemple. "js / *. js" ou "test / ** / * Spec.js". Appuyez sur Entrée pour passer à la question suivante.

* .js test / ** / *. js

Doit-on exclure l'un des fichiers inclus dans les modèles précédents? Vous pouvez utiliser des modèles globaux, par exemple. "** / *. swp".

Appuyez sur Entrée pour passer à la question suivante.

Voulez-vous que Karma surveille tous les fichiers et exécute les tests de changement? Appuyez sur tab pour lister les options possibles.

Oui

Fichier de configuration généré à "/Users/vojta/Code/karma/my.conf.js".

Juan Manuel Guerrero Hernández
la source
1

Je dois ajouter que dans mon cas, karma me donnait l'erreur parce que j'avais des crochets [carrés] dans le nom d'un des dossiers parents.

Yura
la source
1

Le même problème m'est arrivé, et c'était dû à un module obsolète.

Courir l'a npm updaterésolu.

Magicprog.fr
la source
1

Tt se plaint de l'adaptateur qui est probablement jasmin ou moka. Soit l'adaptateur est manquant, soit il n'est pas configuré correctement, soit il s'agit d'une version obsolète ou boguée de l'adaptateur.

Dans mon cas, j'avais une ancienne version de mocha 2.5.3 qui n'était pas compatible avec karma 1+. J'ai mis à jour la dépendance mocha vers la dernière version disponible 3.2.0 et le problème a été résolu.

Giorgio
la source
1

Tout en travaillant sur de nombreuses erreurs vaguement décrites, j'ai essayé de définir basePath: '../', après avoir corrigé d'autres erreurs (comme des virgules manquantes qui étaient décrites comme des erreurs de contenu d'objet), le dernier changement de basePath: '', a fait fonctionner le karma. Les déclarations d'erreur de karma nécessitent beaucoup de travail. Ce n’est pas simple de le faire démarrer.

Mike_Laird
la source
1

J'ai eu le même problème. Mon navigateur s'ouvrirait mais sur mon terminal, il lançait l'erreur suivante

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!

J'ai vérifié mon fichier karma.conf.js. Dans le tableau du framework, j'avais inclus jasmine et requirejs. Mais je n'avais installé que karma-jasmine. La suppression de requireJS et la réexécution du démarrage du karma fonctionnaient!

CoolNiks
la source
1

Vous devrez spécifier le répertoire de karma.config.jsdémarrage de karma.

Essayer

karma start karma.config.js

Paschalidis Christos
la source
1

J'ai eu une mauvaise configuration de 'fichiers' dans mon karma.conf.js

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

cela a rattrapé tous les fichiers dans node_modules / y compris ceux du plugin karma-jasmine, car il était vu comme des fichiers sourde, il n'était pas chargé au démarrage. Changer en

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

résolu le problème dans mon cas

Johan Martinsson
la source
0

FWIW - la recherche du chemin du fichier a karma.conf.jsfonctionné pour moi localement, mais pas sur mon générateur jenkins. Je n'ai aucune idée de pourquoi c'est le cas, mais sur jenkins, il lançait cette erreur à moins que le karma.conf.jsfichier ne se trouve dans le répertoire racine où la commande karma a été donnée. J'utilise des rails et j'exécute les spécifications js via une tâche de râteau. Le code ci-dessous pourrait être utile pour certains.

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

daino3
la source
0

Le problème dans mon cas était que le karma ne ramassait aucun fichier. Le réparer dans karma.conf.js a résolu le problème.

Andras Hatvani
la source
0

Dans mon cas, ce n'était pas du tout lié au karma! Je lance karma depuis gulp, avec ES6 / babel, et il y avait en fait une erreur de syntaxe de code, signalée par une erreur babel au-dessus de mon karma:

ERREUR [preprocessor.babel]: xxx.js: jeton inattendu (19:83)

J'ai corrigé cela dans mon src et le karma était à nouveau heureux.

Merl
la source
0

J'ai aussi eu du mal avec ça. Ce à quoi je suis arrivé, c'est que cette erreur se produit pour l'une des raisons suivantes

Mon problème était que mon fichier de configuration était nommé karma.config.jsau lieu de karma.conf.js.

Si vous avez installé l' adaptateur de test mais qu'il ne fonctionne toujours pas, essayez de l'exécuter karma initet de suivre la configuration de configuration guidée.

kontrollanten
la source
0

Dans mon cas, le nom du fichier de configuration était différent . Donc, en exécutant la commande spécifiant le conf fichier résolu mon problème.

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

Et pour 'PhantomJS', ouvrir le lien spécifié ( localhost: 9876 ) dans le navigateur exécute les cas de test.

J'espère que ça aide. :)

EDIT 1: Mon fichier de configuration Karma

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
la source
0

J'ai reçu cette erreur car j'avais besoin de la même dépendance deux fois!

La suppression de la dépendance de fichier en double a supprimé l'erreur pour moi. Cerclé en bleu ci-dessous.

entrez la description de l'image ici

John Vandivier
la source
0

Vous devez spécifier le fichier de configuration du karma sur karma.

karma start karma.config.js 

Ça marche pour moi

Steve KACOU
la source