Erro: você precisa incluir algum adaptador que implemente o método __karma __. Start

91

Estou tentando adicionar alguns testes de unidade a um dos meus projetos.

Até agora eu instalei e configurei o karma, e instalei o jasmine. Tenho um arquivo de teste na minha test/pasta.

O servidor karma foi iniciado, a página do navegador está pronta, mas karma runfalha da seguinte forma:

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

Esta mensagem de erro não faz bem ao Google.

É algo óbvio ou preciso fornecer mais informações?

Drew Noakes
fonte
2
Queria observar que estava recebendo esse erro devido a erros de sintaxe do pré-processador que não percebi a princípio.
BradGreens de

Respostas:

73

Parece que este é um erro muito geral, no entanto, no meu caso, o problema foi não executar a karma startpartir da pasta correta ou não reiniciá-lo após alterar a configuração.

Vou deixar esta questão em aberto e espero que ela possa se tornar um recurso para outras pessoas que receberem essa mensagem de erro.

Drew Noakes
fonte
26
O mesmo para mim - correr karma start test/karma.conf.jsfez o truque para mim. O diretório certo pode ser diferente para você.
Jason,
3
Recebi este erro ao adicionar pré-processadores: {'src / ** / *. Js': ['babel']}, alguma ideia?
SuperUberDuper
5
Para mim, mudar test/**/*.{js,jsx}para test/**/*.+(js|jsx)corrigir esse erro. Que bizarro!
junípero
1
Além disso, esse erro pode aparecer se a configuração do karma tiver erro de digitação
sergolius
28

Se você nomear o arquivo de configuração do karma karma.conf.js, pode simplesmente digitar karma start.

Caso contrário, especifique o nome do arquivo karma start karmafile.js

(Eu estava no diretório certo, mas não estava especificando um nome de arquivo.)

James Lawruk
fonte
13

Você precisa executar sua karma runfunção ou qualquer outra função na pasta onde o karma-conf.js está.

AndyX
fonte
Isso não parece certo. Se eu executar karma startna srcsubpasta onde karma.conf.jsestá localizado, obtenho um erro[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

No meu caso, tive que renomear o arquivo para karma.conf.js e fazer karma start

Rafael Fernandes
fonte
6

Tive um problema com karma.conf.jso formato do código do arquivo:

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

A vírgula extra na filesmatriz causou este erro:

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

Eu não estava executando o comando karma start do caminho onde estava meu karma.conf.js. Mudei para essa pasta e executei o mesmo comando. Isso é tudo

Sunil Garg
fonte
4

Eu estava enfrentando esse problema ao executar as especificações na base de código Angular.js. Eu tive que correr npm install karma-jasmine -gpara fazer isso funcionar.

HariKrishnan
fonte
3

Se você digitar "karma start", deverá ter um arquivo karma.conf.js na pasta atual. ou apenas "karma start /path/karma.conf.js"

Tente criar um novo karmar.conf.js por "karma init /path/karma.conf.js"

Mike Zhang
fonte
2

No meu caso, eu estava aplicando por engano o pré-processador commonjs aos karma-*módulos e ao adapter.jsfrom karma-chromee karma-firefoxfoi quebrado dessa forma.

Infelizmente, este é um erro muito genérico.

Adrian Ber
fonte
Você poderia fornecer mais informações sobre a correção que você fez? Isso pode estar me afetando agora, pois sei que estou usando cromo-carma. Obrigado!
daniel.caspers
Você aplica o pré-processador commonjs (ele está configurado no karma runner)? Em caso afirmativo, certifique-se de que não seja aplicado aos arquivos nos módulos karma- *.
Adrian Ber
2

Eu estava recebendo o mesmo erro porque o projeto estava usando Babel 6 e eu tinha esquecido de adicionar o arquivo babelrc. Apenas compartilhando caso isso possa ajudar.

Brett
fonte
2

No meu caso, a mensagem era na verdade muito descritiva: esqueci de adicionar um adaptador, no meu caso Jasmine, ao arquivo de configuração. Portanto:

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

Você precisa configurar seu arquivo "my.conf.js", pois ele contém todas as informações para usar para testar seu código.

Tudo o que você precisa escrever é isto:

O arquivo de configuração pode ser gerado usando karma init:

$ karma init my.conf.js

Qual estrutura de teste você deseja usar? Pressione tab para listar as opções possíveis. Entre para ir para a próxima pergunta.

jasmim

Você deseja usar Require.js? Isso adicionará o plugin Require.js. Pressione tab para listar as opções possíveis. Entre para ir para a próxima pergunta.

não

Você quer capturar um navegador automaticamente? Pressione tab para listar as opções possíveis. Insira uma string vazia para passar para a próxima pergunta.

cromada

Qual é a localização de seus arquivos de origem e de teste? Você pode usar padrões glob, por exemplo. "js / *. js" ou "test / ** / * Spec.js". Pressione Enter para ir para a próxima pergunta.

* .js test / ** / *. js

Algum dos arquivos incluídos pelos padrões anteriores deve ser excluído? Você pode usar padrões glob, por exemplo. "** / *. swp".

Pressione Enter para passar para a próxima pergunta.

Você quer que o Karma observe todos os arquivos e execute os testes de mudança? Pressione tab para listar as opções possíveis.

sim

Arquivo de configuração gerado em "/Users/vojta/Code/karma/my.conf.js".

Juan Manuel Guerrero Hernández
fonte
1

Devo acrescentar que, no meu caso, o karma estava me dando o erro porque eu tinha [colchetes] no nome de uma das pastas pai.

Yura
fonte
1

O mesmo problema aconteceu comigo, e foi devido a um módulo desatualizado.

Correr npm updateresolveu.

Magicprog.fr
fonte
1

Tt está reclamando do adaptador que provavelmente é jasmim ou mocha. O adaptador está ausente ou não está configurado corretamente, ou é uma versão desatualizada ou com erros do adaptador.

No meu caso, eu tinha uma versão antiga do mocha 2.5.3 que não era compatível com o karma 1+. Atualizei a dependência do mocha para a última versão disponível 3.2.0 e o problema foi resolvido.

Giorgio
fonte
1

Enquanto trabalhava em vários erros vagamente descritos, tentei definir basePath: '../', depois de corrigir outros erros (como vírgulas ausentes que foram descritas como erros de conteúdo do objeto), a última alteração de volta para basePath: '', fez o karma funcionar. as declarações de erro do karma precisam de muito trabalho. Não é simples fazer funcionar.

Mike_Laird
fonte
1

Eu tive o mesmo problema. Meu navegador abriria, mas no meu terminal gerou o seguinte erro

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!

Verifiquei meu arquivo karma.conf.js. Na matriz do framework, eu incluí jasmine e requirejs. Mas eu tinha instalado apenas o karma-jasmine. Remover o requireJS e executar novamente o karma começou funcionado!

CoolNiks
fonte
1

Você terá que especificar o diretório de karma.config.js quando você executa o start karma.

Experimentar

karma start karma.config.js

Paschalidis Christos
fonte
1

Eu tinha uma configuração ruim de 'arquivos' no meu karma.conf.js

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

isto pegou todos os arquivos em node_modules / incluindo aqueles do plugin karma-jasmine, visto que era visto como arquivos sourde, não foi carregado na inicialização. Mudando para

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

resolveu o problema no meu caso

Johan Martinsson
fonte
0

FWIW - buscar o caminho do arquivo karma.conf.jsfuncionou para mim localmente, mas não no meu construtor jenkins. Não tenho ideia de por que esse é o caso, mas em Jenkins ele estava jogando esse erro, a menos que okarma.conf.js arquivo estivesse no diretório raiz onde o comando karma foi dado. Estou usando rails e executando as especificações js por meio de uma tarefa rake. O código está abaixo, o que pode ser útil para alguns.

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

daino3
fonte
0

O problema no meu caso foi que o carma não coletou nenhum arquivo. Corrigir no karma.conf.js resolveu o problema.

Andras Hatvani
fonte
0

No meu caso, não foi relacionado ao carma de forma alguma! Eu corro karma do gulp, com ES6 / babel, e houve realmente um erro de sintaxe de código, sinalizado por um erro de babel acima do meu karma:

ERRO [preprocessor.babel]: xxx.js: token inesperado (19:83)

Eu consertei isso em meu src e carma estava feliz novamente.

Merl
fonte
0

Eu tenho lutado com isso também. O que descobri é que esse erro ocorre devido a um dos seguintes motivos

Meu problema era que meu arquivo de configuração foi nomeado em karma.config.jsvez de karma.conf.js.

Se você instalou o adaptador de teste, mas ele ainda não funciona, tente executar karma inite passar pela configuração guiada.

Kontrollanten
fonte
0

No meu caso, o nome do arquivo de configuração era diferente . Portanto, executar o comando especificando o arquivo conf resolveu meu problema.

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

E para 'PhantomJS', abrir o link especificado ( localhost: 9876 ) no navegador executa os casos de teste.

Espero que ajude. :)

EDIT 1: Arquivo de configuração do My 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
fonte
0

Recebi este erro porque solicitei a mesma dependência duas vezes!

Remover a dependência de arquivo duplicado removeu o erro para mim. Circulado em azul abaixo.

insira a descrição da imagem aqui

John Vandivier
fonte
0

Você deve especificar o arquivo de configuração do karma para o karma.

karma start karma.config.js 

Funciona para mim

Steve KACOU
fonte