web-dev-qa-db-fra.com

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

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

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

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 concerne pas bien Google.

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

83
Drew Noakes

Cela semble être une erreur très générale, mais dans mon cas, le problème était que je n’avais pas exécuté karma start À partir du dossier approprié ou que je ne l’avais pas redémarré après avoir modifié la configuration.

Je laisserai cette question ouverte et j'espère que cela deviendra une ressource pour les autres utilisateurs de ce message d'erreur.

70
Drew Noakes

Si vous nommez votre fichier de configuration de 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 n'ai pas spécifié de nom de fichier.)

25
James Lawruk

Vous devez exécuter votre karma run ou quelque fonction que ce soit dans le dossier où se trouve karma-conf.js.

13
AndyX

Dans mon cas, je devais renommer le fichier en karma.conf.js puis faire karma start

7
Rafael Fernandes

J'ai eu un problème avec karma.conf.js 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 tableau files a été provoquée par cette erreur:

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

Je ne courais pas karma start commande depuis le chemin où se trouvait karma.conf.js. Je suis passé à ce dossier et j'ai exécuté la même commande. C'est tout

6
Sunil Garg

Je faisais face à ce problème lors de l'exécution des spécifications sur la base de code Angular.js. Je devais courir npm install karma-jasmine -g pour que cela fonctionne.

4
HariKrishnan

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

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

3
Mike Zhang

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. Ainsi:

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

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 le suivant:

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 l'onglet pour lister les options possibles. Entrez pour passer à la question suivante.

jasmin

Voulez-vous utiliser Require.js? Cela va ajouter le plugin Require.js. Appuyez sur l'onglet pour lister les options possibles. Entrez pour passer à la question suivante.

non

Voulez-vous capturer un navigateur automatiquement? Appuyez sur l'onglet 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

Les fichiers inclus dans les modèles précédents doivent-ils être exclus? 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 modification? Appuyez sur l'onglet pour lister les options possibles.

oui

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

2
Juan Hernández

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

2
Brett

Tt se plaint de l'adaptateur qui est probablement jasmine ou moka. Soit l'adaptateur est manquant, soit la configuration n'est pas correcte, soit une version obsolète ou erronée de l'adaptateur.

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

1
Giorgio

Alors que je travaillais sur de nombreuses erreurs décrites de manière vague, j'ai essayé de définir basePath: '../', après avoir corrigé d'autres erreurs (comme des virgules manquantes décrites comme des erreurs de contenu d'objet), le dernier changement effectué sur basePath: '' a permis au karma de fonctionner. Les déclarations d'erreur du karma nécessitent beaucoup de travail. Ce n'est pas simple de le faire.

1
Mike_Laird

Je dois ajouter que dans mon cas, le karma me donnait l'erreur car j'avais entre crochets le nom d'un des dossiers parents.

1
Yura

Dans mon cas, j’appliquais par erreur le préprocesseur commonjs au karma-* modules et le adapter.js de karma-chrome et karma-firefox était cassé de cette façon.

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

1
Adrian Ber

J'ai eu le même problème. Mon navigateur s'ouvrirait mais sur mon terminal, l'erreur suivante serait renvoyée

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 de framework, j'avais inclus jasmine et requirejs. Mais je n’avais installé que du karma-jasmine.

0
CoolNiks

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

0
Andras Hatvani

J'ai eu du mal avec ça aussi. Ce que je suis venu à est que cette erreur se produit parce que l'une des raisons suivantes

Mon problème était que mon fichier de configuration s'appelait karma.config.js au lieu de karma.conf.js.

Si vous avez installé l'adaptateur de test mais que cela ne fonctionne toujours pas, essayez d'exécuter karma init et passez par la configuration de configuration guidée.

0
kontrollanten

J'ai reçu cette erreur parce que 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. Encerclé en bleu ci-dessous.

enter image description here

0
John Vandivier

Dans mon cas, ce n'était pas du tout lié au karma! Je lance karma de gulp, avec ES6/babel, et il y avait en fait une erreur de syntaxe de code, signalée par une erreur de 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 heureux à nouveau.

0
Merl

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

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

cela rattrape tous les fichiers de node_modules /, y compris ceux du plugin karma-jasmine, vu que les fichiers source ne sont pas chargés au démarrage. Passer à

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

résolu le problème dans mon cas

0
Johan Martinsson

Dans mon cas, le nom du fichier de configuration était différent. Ainsi, l’exécution de la commande spécifiant le fichier conf a résolu mon problème.

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

Et pour 'PhantomJS', l'ouverture du 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
  })
}
0
Naveen Kumar V

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

Fonctionnement npm update résolu.

0
Magicprog.fr

FWIW - la recherche du chemin de fichier de karma.conf.js A fonctionné pour moi localement, mais pas sur mon constructeur jenkins. Je n'ai aucune idée pourquoi c'est le cas, mais sur Jenkins, cette erreur était générée à moins que le fichier karma.conf.js Ne se trouve dans le répertoire racine où la commande karma a été donnée. J'utilise Rails et exécute les spécifications js par le biais d'une tâche de ratissage. Le code ci-dessous peut être utile pour certains.

https://Gist.github.com/daino3/a39486ff8bfc1668e92

0
daino3

Vous devrez spécifier le répertoire de karma.config.js quand vous lancez le karma.

Essayer

karma start karma.config.js

0