Error: debe incluir algún adaptador que implemente el método __karma __. Start

91

Estoy intentando agregar algunas pruebas unitarias a uno de mis proyectos.

Hasta ahora he instalado y configurado karma, y ​​he instalado jasmine. Tengo un archivo de prueba en mi test/carpeta.

El servidor de karma se ha iniciado, la página del navegador está lista, pero karma runfalla de la siguiente manera:

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

Este mensaje de error no Google bien.

¿Es esto algo obvio o necesito proporcionar más información?

Dibujó Noakes
fuente
2
Quería notar que estaba recibiendo este error debido a errores de sintaxis del preprocesador que no había notado al principio.
BradGreens

Respuestas:

73

Parece que este es un error muy general, sin embargo, en mi caso, el problema fue que no ejecuté karma startdesde la carpeta correcta o que no lo reinicié después de cambiar la configuración.

Dejaré esta pregunta abierta y espero que pueda convertirse en un recurso para otras personas que experimenten este mensaje de error.

Dibujó Noakes
fuente
26
Lo mismo para mí, correr me karma start test/karma.conf.jssirvió. El directorio correcto puede ser diferente para usted.
Jason
3
Recibí este error al agregar preprocesadores: {'src / ** / *. Js': ['babel']}, ¿alguna idea?
SuperUberDuper
5
Para mí, el cambio test/**/*.{js,jsx}a test/**/*.+(js|jsx)solucionó este error. ¡Qué extraño!
enebro
1
Además, dicho error puede aparecer si la configuración de karma tiene un error tipográfico
sergolius
28

Si nombra su archivo de configuración de karma karma.conf.js, simplemente escriba karma start.

De lo contrario, especifique el nombre del archivo karma start karmafile.js

(Estaba en el directorio correcto, pero no estaba especificando un nombre de archivo).

James Lawruk
fuente
13

karma runDebe ejecutar su función o cualquier otra en la carpeta donde se encuentra karma-conf.js.

AndyX
fuente
Esto no parece correcto. Si ejecuto karma starten la srcsubcarpeta donde karma.conf.jsse encuentra, aparece un error[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

En mi caso, tuve que cambiar el nombre del archivo a karma.conf.js y luego hacer karma start

Rafael Fernandes
fuente
6

Tuve un problema con karma.conf.jsel formato del código de archivo:

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 coma adicional en la filesmatriz ha causado este error:

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

No estaba ejecutando el comando karma start desde la ruta donde estaba mi karma.conf.js. Cambié a esa carpeta y ejecuté el mismo comando. Eso es todo

Sunil Garg
fuente
4

Me enfrentaba a este problema mientras ejecutaba especificaciones en el código base de Angular.js. Tuve que correr npm install karma-jasmine -gpara que esto funcionara.

HariKrishnan
fuente
3

Si escribe "karma start", debe tener un archivo karma.conf.js en la carpeta actual. o simplemente "karma start /path/karma.conf.js"

Intente crear un nuevo karmar.conf.js mediante "karma init /path/karma.conf.js"

Mike Zhang
fuente
2

En mi caso, estaba aplicando por error el preprocesador commonjs a los karma-*módulos y adapter.jsdesde karma-chromey karma-firefoxse rompió de esta manera.

Desafortunadamente, este es un error muy genérico.

Adrian Ber
fuente
¿Podría proporcionar más antecedentes sobre la solución que hizo? Esto podría afectarme ahora mismo, ya que sé que estoy usando karma-chrome. ¡Gracias!
daniel.caspers
¿Aplicas el preprocesador commonjs (está configurado en karma runner)? En caso afirmativo, asegúrese de que no se aplique a los archivos de los módulos karma- *.
Adrian Ber
2

Recibía el mismo error porque el proyecto usaba Babel 6 y me había olvidado de agregar el archivo babelrc. Solo compartir en caso de que esto pueda ayudar.

Brett
fuente
2

En mi caso, el mensaje fue muy descriptivo: olvidé agregar un adaptador, en mi caso Jasmine, en el archivo de configuración. Así:

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

Necesita configurar su archivo "my.conf.js", porque contiene toda la información que se utilizará para probar su código.

Todo lo que necesitas escribir es esto:

El archivo de configuración se puede generar usando karma init:

$ karma init my.conf.js

¿Qué marco de prueba desea utilizar? Presione el tabulador para enumerar las posibles opciones. Ingrese para pasar a la siguiente pregunta.

jazmín

¿Quieres usar Require.js? Esto agregará el complemento Require.js. Presione el tabulador para enumerar las posibles opciones. Ingrese para pasar a la siguiente pregunta.

No

¿Quieres capturar un navegador automáticamente? Presione el tabulador para enumerar las posibles opciones. Ingrese una cadena vacía para pasar a la siguiente pregunta.

Cromo

¿Cuál es la ubicación de sus archivos fuente y de prueba? Puede utilizar patrones glob, por ejemplo. "js / *. js" o "prueba / ** / * Spec.js". Presione Enter para pasar a la siguiente pregunta.

* .js prueba / ** / *. js

¿Debería excluirse alguno de los archivos incluidos en los patrones anteriores? Puede utilizar patrones glob, por ejemplo. "** / *. swp".

Presione Enter para pasar a la siguiente pregunta.

¿Quieres que Karma observe todos los archivos y ejecute las pruebas al cambiar? Presione el tabulador para enumerar las posibles opciones.

si

Archivo de configuración generado en "/Users/vojta/Code/karma/my.conf.js".

Juan Manuel Guerrero Hernández
fuente
1

Debo agregar que en mi caso karma me estaba dando el error porque tenía corchetes en el nombre de una de las carpetas principales.

Yura
fuente
1

El mismo problema me sucedió a mí y se debió a un módulo desactualizado.

Correr lo npm updateresolvió.

Magicprog.fr
fuente
1

Tt se queja del adaptador, que probablemente sea jazmín o moka. O falta el adaptador, o no está configurado correctamente, o es una versión desactualizada o con errores del adaptador.

En mi caso, tenía una versión antigua de mocha 2.5.3 que no era compatible con karma 1+. Actualicé la dependencia de mocha a la última versión disponible 3.2.0 y el problema se resolvió.

Giorgio
fuente
1

Mientras trabajaba en numerosos errores descritos vagamente, intenté configurar basePath: '../', después de corregir otros errores (como las comas faltantes que se describieron como errores de contenido del objeto), el último cambio de regreso a basePath: '', hizo que el karma funcionara. Las declaraciones de error de karma necesitan mucho trabajo. No es sencillo ponerlo en marcha.

Mike_Laird
fuente
1

Tuve el mismo problema. Mi navegador se abriría pero en mi terminal arrojó el siguiente error

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!

Revisé mi archivo karma.conf.js. En la matriz de marco, había incluido jasmine y requirejs. Pero solo había instalado karma-jasmine. ¡Quitar requireJS y volver a ejecutar el karma start funcionó!

CoolNiks
fuente
1

Tendrá que especificar el directorio de karma.config.jscuando ejecuta start karma.

Tratar

karma start karma.config.js

Paschalidis Christos
fuente
1

Tenía una mala configuración de 'archivos' en mi karma.conf.js

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

esto capturó todos los archivos en node_modules / incluidos los del complemento karma-jasmine, ya que se vio como archivos fuente que no se cargó al inicio. Cambiar a

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

resolvió el problema en mi caso

Johan Martinsson
fuente
0

FWIW: obtener la ruta del archivo karma.conf.jsme funcionó localmente, pero no en mi constructor jenkins. No tengo ni idea de por qué este es el caso, pero en jenkins arrojaba este error a menos que el karma.conf.jsarchivo estuviera en el directorio raíz donde se dio el comando karma. Estoy usando rieles y ejecutando las especificaciones js a través de una tarea de rake. A continuación se muestra el código que podría ser útil para algunos.

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

daino3
fuente
0

El problema en mi caso fue que el karma no recogió ningún archivo. Arreglarlo en karma.conf.js resolvió el problema.

Andras Hatvani
fuente
0

En mi caso, ¡no estaba relacionado con el karma en absoluto! Ejecuté karma desde gulp, con ES6 / babel, y en realidad hubo un error de sintaxis de código, marcado por un error de babel por encima de mi karma:

ERROR [preprocessor.babel]: xxx.js: Token inesperado (19:83)

Lo arreglé en mi src y karma volvió a ser feliz.

Merl
fuente
0

Yo también he estado luchando con esto. Lo que se me ocurrió es que este error se produce debido a una de las siguientes razones

Mi problema fue que mi archivo de configuración fue nombrado en karma.config.jslugar de karma.conf.js.

Si ha instalado el adaptador de prueba pero aún no funciona, intente ejecutarlo karma inity siga la configuración de configuración guiada.

kontrollanten
fuente
0

En mi caso, el nombre del archivo de configuración era diferente . Entonces, ejecutar el comando que especifica el archivo conf resolvió mi problema.

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

Y para 'PhantomJS', al abrir el enlace especificado ( localhost: 9876 ) en el navegador se ejecutan los casos de prueba.

Espero eso ayude. :)

EDITAR 1: Mi archivo de configuración de 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
fuente
0

¡Recibí este error porque necesitaba la misma dependencia dos veces!

Eliminar la dependencia de archivos duplicados eliminó el error para mí. Rodeado en azul a continuación.

ingrese la descripción de la imagen aquí

John Vandivier
fuente
0

Debe especificar el archivo de configuración de karma a karma.

karma start karma.config.js 

Esto funciona para mi

Steve KACOU
fuente