web-dev-qa-db-fra.com

Uncaught ReferenceError: require n'est pas défini sur karma start karma.conf.js

Utilisation de Karma et Jasmine pour les tests unitaires sur le front angulaire d'une application Rails. Il semble que j’ai fait tout ce que nous pouvions savoir pour surmonter cette erreur et il me reste un million de dépendances dans mon package.json. Voici mon Karma.conf.js:

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

// list of files / patterns to load in the browser
files: [
   //angular mocks
  'bower_components/angular/angular.js',
  'bower_components/angular-mocs/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',

  //load modules
  'public/app/app.js',

  //test file locations
  'app/**/*.js',
  'spec/**/*.js',
  'public/**/*.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: ['progress'],


// 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', 'Firefox'],


// 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,

plugins : [
  'karma-requirejs',
  'karma-jasmine',
  'karma-chrome-launcher',
  'karma-firefox-launcher',
  'karma-browserify'
],

frameworks: ['jasmine', 'browserify']

  })
}

Y a-t-il quelque chose d'évident que je fais mal ici? J'espère que oui, il semblerait que j'ai à moitié mis en œuvre deux solutions sans savoir exactement ce qui se passe. Merci!

Je reçois l'erreur sur mon fichier app.js à la première ligne avec 'require'

6
Adam Weitzman

Le navigateur ne comprend pas la nécessité. Vous devez donc prétraiter vos fichiers avant de les envoyer au navigateur. Vous pouvez configurer Webpack dans karma.config afin que karma puisse utiliser webpack pour prétraiter vos fichiers avant de les tester. Vous devez également installer karma webpack avec,

npm i --save-dev karma-webpack

Il y a plusieurs façons de faire cela, c'est ce que j'ai fait. 

var path = require('path');
var webpackConfig = require('./webpack.config');
var entry = path.resolve(webpackConfig.context, webpackConfig.entry);
var preprocessors = {};
preprocessors[entry] = ['webpack'];
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: ['chai','mocha'],


    // list of files / patterns to load in the browser
    files: [entry],
    webpack:webpackConfig,

    // 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:preprocessors,


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // 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 simultanous
    concurrency: Infinity,
    plugins:[
      require('karma-webpack'),
      ('karma-chai'),
      ('karma-mocha'),
      ('karma-chrome-launcher')
    ]
  })
}

Voici une graine sur laquelle j'ai travaillé avec karma , webpack , angularjs .

jetez un coup d'oeil et bonne chance.

7
Jorawar Singh

Suivez ce guide pour configurer Karma si vous utilisez besoin de charger vos modules:

https://karma-runner.github.io/0.8/plus/RequireJS.html

ou si vous utilisez browserify pour le regroupement, essayez ceci:

https://github.com/nikku/karma-browserify

vous voudrez peut-être aussi vous pencher sur cette question: Comment tester un projet browserify avec karma/jasmine

1
AJ Meyghani