Kesalahan: Anda perlu menyertakan beberapa adaptor yang menerapkan metode __karma __. Start

91

Saya mencoba menambahkan beberapa pengujian unit ke salah satu proyek saya.

Sejauh ini saya telah menginstal dan mengkonfigurasi karma, dan telah menginstal Jasmine. Saya punya satu file uji di test/folder saya .

Server karma telah dimulai, halaman browser sudah siap, tetapi karma rungagal sebagai berikut:

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

Pesan kesalahan ini tidak Google dengan baik.

Apakah ini sesuatu yang jelas, atau apakah saya perlu memberikan informasi lebih lanjut?

Drew Noakes
sumber
2
Ingin mencatat bahwa saya menerima kesalahan ini karena kesalahan sintaks preprocessor yang tidak saya perhatikan pada awalnya.
BradGreens

Jawaban:

73

Tampaknya ini adalah kesalahan yang sangat umum, namun dalam kasus saya masalahnya adalah saya tidak menjalankan karma startdari folder yang benar, atau saya tidak memulai ulang setelah mengubah konfigurasi.

Saya akan membiarkan pertanyaan ini terbuka dan semoga dapat menjadi sumber bagi orang lain yang mengalami pesan kesalahan ini.

Drew Noakes
sumber
26
Sama untukku - berlari karma start test/karma.conf.jsmelakukan triknya untukku. Direktori yang benar mungkin berbeda untuk Anda.
Jason
3
Saya mendapatkan kesalahan ini saat menambahkan praprosesor: {'src / ** / *. Js': ['babel']}, ada ide?
SuperUberDuper
5
Bagi saya mengubah test/**/*.{js,jsx}untuk test/**/*.+(js|jsx)memperbaiki kesalahan ini. Aneh sekali!
juniper-
1
Juga kesalahan seperti itu dapat muncul jika konfigurasi karma memiliki kesalahan ketik
sergolius
28

Jika Anda menamai file konfigurasi karma karma.conf.jsAnda, Anda cukup mengetik karma start.

Jika tidak, tentukan nama file karma start karmafile.js

(Saya berada di direktori yang benar, tetapi tidak menentukan nama file.)

James Lawruk
sumber
13

Anda perlu menjalankan karma runfungsi Anda atau apa pun di folder tempat karma-conf.js berada.

AndyX
sumber
Ini sepertinya tidak benar. Jika saya menjalankan karma startdi srcsubfolder di mana karma.conf.jsberada saya mendapatkan kesalahan[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

Dalam kasus saya, saya harus mengganti nama file menjadi karma.conf.js kemudian melakukan karma start

Rafael Fernandes
sumber
6

Saya punya masalah dengan karma.conf.jsformat kode file:

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

Koma ekstra dalam filesarray menyebabkan kesalahan ini:

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

Saya tidak menjalankan perintah mulai karma dari jalur tempat karma.conf.js saya berada. Saya beralih ke folder itu dan menjalankan perintah yang sama. Itu saja

Sunil Garg
sumber
4

Saya menghadapi masalah ini saat menjalankan spesifikasi pada basis kode Angular.js. Aku harus lari npm install karma-jasmine -gagar ini berhasil.

HariKrishnan
sumber
3

Jika Anda mengetik "karma start", Anda harus memiliki file karma.conf.js di folder saat ini. atau hanya "karma start /path/karma.conf.js"

Cobalah untuk membuat karmar.conf.js baru dengan "karma init /path/karma.conf.js"

Mike Zhang
sumber
2

Dalam kasus saya, saya tidak sengaja menerapkan preprocessor commonjs ke karma-*modul dan adapter.jsdari karma-chromedan karma-firefoxrusak dengan cara ini.

Sayangnya, ini adalah kesalahan yang sangat umum.

Adrian Ber
sumber
Bisakah Anda memberikan lebih banyak latar belakang untuk perbaikan yang Anda lakukan? Ini mungkin membuat saya sekarang karena saya tahu saya menggunakan karma-chrome. Terima kasih!
daniel.caspers
Apakah Anda menerapkan preprocessor commonjs (apakah sudah dikonfigurasi dalam karma runner)? Jika ya, pastikan itu tidak diterapkan ke file dalam modul karma- *.
Adrian Ber
2

Saya mendapatkan kesalahan yang sama karena proyek menggunakan Babel 6 dan saya lupa menambahkan file babelrc. Hanya berbagi kalau-kalau ini bisa membantu.

Brett
sumber
2

Dalam kasus saya, pesan tersebut sebenarnya sangat deskriptif: Saya lupa menambahkan adaptor, dalam kasus saya Jasmine, ke dalam file konfigurasi. Jadi:

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

Anda perlu mengkonfigurasi file "my.conf.js" Anda, karena berisi semua info yang akan digunakan untuk menguji kode Anda.

Semua yang perlu Anda tulis adalah ini:

File konfigurasi dapat dibuat menggunakan karma init:

$ karma init my.conf.js

Framework pengujian mana yang ingin Anda gunakan? Tekan tab untuk mendaftar opsi yang memungkinkan. Enter untuk pindah ke pertanyaan berikutnya.

melati

Apakah Anda ingin menggunakan Require.js? Ini akan menambahkan plugin Require.js. Tekan tab untuk mendaftar opsi yang memungkinkan. Enter untuk pindah ke pertanyaan berikutnya.

tidak

Apakah Anda ingin menangkap browser secara otomatis? Tekan tab untuk mendaftar opsi yang memungkinkan. Masukkan string kosong untuk pindah ke pertanyaan berikutnya.

Chrome

Apa lokasi sumber dan file pengujian Anda? Anda dapat menggunakan pola glob, mis. "js / *. js" atau "test / ** / * Spec.js". Tekan Enter untuk pindah ke pertanyaan berikutnya.

* .js test / ** / *. js

Haruskah salah satu file yang disertakan oleh pola sebelumnya dikecualikan? Anda dapat menggunakan pola glob, mis. "** / *. swp".

Tekan Enter untuk pindah ke pertanyaan berikutnya.

Apakah Anda ingin Karma melihat semua file dan menjalankan pengujian saat berubah? Tekan tab untuk mendaftar opsi yang memungkinkan.

Iya

File konfigurasi dibuat di "/Users/vojta/Code/karma/my.conf.js".

Juan Manuel Guerrero Hernández
sumber
1

Saya harus menambahkan bahwa dalam kasus saya karma memberi saya kesalahan karena saya memiliki tanda kurung [persegi] di nama salah satu folder induk.

Yura
sumber
1

Masalah yang sama terjadi pada saya, dan itu karena modul yang sudah ketinggalan zaman.

Menjalankan npm updatemenyelesaikannya.

Magicprog.fr
sumber
1

Aku mengeluh tentang adaptor yang mungkin melati atau moka. Entah adaptornya tidak ada, atau tidak disiapkan dengan benar, baik itu versi adaptor yang kedaluwarsa atau bermasalah.

Dalam kasus saya, saya memiliki versi lama mocha 2.5.3 yang tidak kompatibel dengan karma 1+. Saya memperbarui ketergantungan mocha ke versi terbaru yang tersedia 3.2.0 dan masalah terpecahkan.

Giorgio
sumber
1

Saat mengerjakan banyak kesalahan yang dijelaskan secara samar-samar, saya mencoba menyetel basePath: '../', Setelah mengoreksi kesalahan lain (seperti koma yang hilang yang dideskripsikan sebagai kesalahan konten objek) perubahan terakhir kembali ke basePath: '', membuat karma berfungsi. Pernyataan kesalahan karma membutuhkan banyak pekerjaan. Tidak mudah untuk mewujudkannya.

Mike_Laird
sumber
1

Saya memiliki masalah yang sama. Browser saya terbuka tetapi pada terminal saya muncul kesalahan berikut

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!

Saya memeriksa file karma.conf.js saya. Dalam susunan kerangka kerja, saya telah memasukkan melati dan membutuhkanjs. Tetapi saya hanya memasang karma-jasmine. Menghapus RequirementJS dan menjalankan kembali karma mulai berhasil!

CoolNiks
sumber
1

Anda harus menentukan direktori karma.config.jskapan Anda menjalankan start karma.

Mencoba

karma start karma.config.js

Paschalidis Christos
sumber
1

Saya memiliki konfigurasi 'file' yang buruk di karma.conf.js saya

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

ini menangkap semua file di node_modules / termasuk yang ada di plugin karma-jasmine, karena itu terlihat sebagai file sumber yang tidak dimuat saat startup. Mengubah ke

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

memecahkan masalah dalam kasus saya

Johan Martinsson
sumber
0

FWIW - mencari sumber jalur file karma.conf.jsbekerja untuk saya secara lokal, tetapi tidak pada pembuat jenkins saya. Saya tidak tahu mengapa ini terjadi, tetapi pada jenkins itu melemparkan kesalahan ini kecuali karma.conf.jsfile itu ada di direktori root tempat perintah karma diberikan. Saya menggunakan rails dan menjalankan spesifikasi js melalui rake task. Kode di bawah ini mungkin berguna bagi sebagian orang.

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

daino3
sumber
0

Masalah dalam kasus saya adalah karma tidak mengambil file apa pun. Memperbaiki di karma.conf.js menyelesaikan masalah.

Andras Hatvani
sumber
0

Dalam kasus saya, itu sama sekali tidak terkait dengan karma! Saya menjalankan karma dari gulp, dengan ES6 / babel, dan sebenarnya ada kesalahan sintaks kode, ditandai oleh kesalahan babel di atas karma saya:

KESALAHAN [preprocessor.babel]: xxx.js: Token tak terduga (19:83)

Saya memperbaikinya di src dan karma saya bahagia lagi.

Merl
sumber
0

Saya telah berjuang dengan ini juga. Apa yang saya temukan adalah bahwa kesalahan ini terjadi karena salah satu alasan berikut

Masalah saya adalah file konfigurasi saya diberi nama, karma.config.jsbukan karma.conf.js.

Jika Anda telah menginstal adaptor uji tetapi masih tidak berfungsi, coba jalankan karma initdan lakukan penyiapan konfigurasi terpandu.

kontrollanten
sumber
0

Dalam kasus saya, nama file konfigurasi berbeda . Jadi, menjalankan perintah yang menentukan file conf memecahkan masalah saya.

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

Dan untuk 'PhantomJS', membuka tautan yang ditentukan ( localhost: 9876 ) di browser menjalankan kasus uji.

Semoga membantu. :)

EDIT 1: File Konfigurasi Karma Saya

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
sumber
0

Saya menerima kesalahan ini karena saya membutuhkan ketergantungan yang sama dua kali!

Menghapus ketergantungan file duplikat menghapus kesalahan bagi saya. Dilingkari dengan warna biru di bawah.

masukkan deskripsi gambar di sini

John Vandivier
sumber
0

Anda harus menentukan file konfigurasi karma ke karma.

karma start karma.config.js 

Ini bekerja untuk saya

Steve KACOU
sumber