Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Webstorm karma/jasmine angularjs testing - reference error module is undefined

I'm trying to set up WebStorm to develop AngularJS. I've followed the instructions from JetBrains and I'm trying to run the test from that tutorial.

describe('PhoneCat controllers', function() {
  beforeEach(module('phonecatApp'));

  describe('PhoneListCtrl', function(){

    it('should create "phones" model with 3 phones', inject(function($controller) {
      var scope = {},
          ctrl = $controller('PhoneListCtrl', { $scope: scope });

      expect(scope.phones.length).toBe(3);
    }));
  });
});

I'm getting the following error

"C:\Program Files (x86)\nodejs\node.exe" "C:\Program Files (x86)\JetBrains\WebStorm 7.0.3\plugins\js-karma\js_reporter\karma-intellij\lib\intellijRunner.js" --karmaPackageDir=C:\Users\L\node_modules\karma --serverPort=9876 --urlRoot=/
Testing started at 21:02 ...

    ReferenceError: module is not defined
        at null.<anonymous> (C:/Users/L/WebstormProjects/AngularJS/test/unit/ControllerTests.js:4:16)
        at C:/Users/L/WebstormProjects/AngularJS/test/unit/ControllerTests.js:3:1


Process finished with exit code 0

My directory layout is

  • test/unit/ControllerTest.js

  • test/karma.conf.js

karma.conf.js below

// Karma configuration
// Generated on Sun Feb 16 2014 20:49:06 GMT+0000 (GMT Standard Time)

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

    // base path, that will be used to resolve files and exclude
    basePath: '',


    // frameworks to use
    frameworks: ['jasmine'],


    // list of files / patterns to load in the browser
    files: [
      {pattern: '*.js', included: true},
      {pattern: 'unit/*.js', included: true}
    ],


    // list of files to exclude
    exclude: [
    ],


    // test results reporter to use
    // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
    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, currently available:
    // - Chrome
    // - ChromeCanary
    // - Firefox
    // - Opera (has to be installed with `npm install karma-opera-launcher`)
    // - Safari (only Mac; has to be installed with `npm install karma-safari-launcher`)
    // - PhantomJS
    // - IE (only Windows; has to be installed with `npm install karma-ie-launcher`)
    browsers: ['Chrome'],


    // If browser does not capture in given timeout [ms], kill it
    captureTimeout: 60000,


    // Continuous Integration mode
    // if true, it capture browsers, run tests and exit
    singleRun: false
  });
};
like image 680
LiamRyan Avatar asked Jan 11 '23 04:01

LiamRyan


2 Answers

angular-mocks.js is missing See http://devnet.jetbrains.com/thread/452824?tstart=0

like image 139
lena Avatar answered Jan 23 '23 16:01

lena


in karma.conf.js should change to :

basePath: './',

$files: [
      {pattern: './*.js', included: true},
      {pattern: './unit/*.js', included: true}
    ],
like image 45
raksa Avatar answered Jan 23 '23 15:01

raksa