Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

karma + jasmine + webpack: module is not a function

I cannot instantiate a controller because of this error, it says:

  • module is not a function

What module is supposed to do is being an alias of angular.mock, but my question is:

Can it be that module gets rewrite but module from webpack? (module.exports)

This is my karma.config.js file:

/*global __dirname*/
// Karma configuration

var path = require('path');
var webpackConfig = require('./webpack.config');

module.exports = function(config) {
config.set({

      // base path that will be used to resolve all patterns (eg. files, exclude)
      basePath: __dirname,

      // frameworks to use
      // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
      frameworks: ['jasmine'],

      // list of files / patterns to load in the browser
      files: [
          'src/Bundle/Resources/assets/base/base.js',
          'src/**/*.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: {
          'src/Bundle/Resources/assets/base/base.js': ['webpack'],
          'src/**/*.spec.js': ['webpack']
      },

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

      plugins: [
          require('karma-jasmine'),
          require('karma-chrome-launcher'),
          require('karma-webpack')
      ],

      webpack: {
          module: {
              loaders: webpackConfig.module.loaders
          },
          resolve: {
              alias: webpackConfig.resolve.alias
          },
          plugins: webpackConfig.plugins
      }
});
};
like image 684
Alejandro Garcia Anglada Avatar asked Sep 10 '15 10:09

Alejandro Garcia Anglada


1 Answers

Actually it was webpack whitch rewrites module (angular.mock.module) to (module.exports), then the solution is not using the alias. Use directly the angular.mock function like this:

angular.mock.module()
like image 50
Alejandro Garcia Anglada Avatar answered Oct 04 '22 16:10

Alejandro Garcia Anglada