Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jasmine tests in karma: Uncaught ReferenceError: require is not defined

Karma can not recognize 'require' statement in JSFileSpec.js file. Running karma.conf.js:

(function() {     describe("DummyEmitter creation", function(){         return it("creation", function(){             var DummyEmitter = require('Util.DummyEmitter');             var dummy = new DummyEmitter('someName');             return expect(dummy).toBeDefined();         });     }); })(); 

ReferenceError: require is not defined

like image 248
Igor Seliverstov Avatar asked Oct 01 '13 13:10

Igor Seliverstov


1 Answers

I was facing same issue, when trying to use require('module_name') (CommonJS style modules) inside a test case and running it using Karma.

The reason was require function is not available to browser (it is undefined). To provide it to browser we can browserify the test js files before Karma runs test case in browser using karma-browserify.

Install karma-browserify using npm install karma-browserify --save-dev

Update karma.conf.js

 frameworks: ['jasmine', 'browserify'],  preprocessors: {     'app/tests/*.js': [ 'browserify' ]  },  plugins: [..., 'karma-browserify'], 

After these changes browserified file is run in browser by Karma, in which require is defined, and test case runs successfully

like image 94
Sandeep Kumar Avatar answered Sep 16 '22 13:09

Sandeep Kumar