Angular - instant testing in Karma + Mocha cannot find a module

I am studying AJS unit testing, with the requirements of RequireJS, Karma, Mocha, Chai and angular -mocks. I was lucky with the first four, but I need to get into the β€œreal” tests and cannot get angular -mocks to work. There is a lot going on, so I will be as brief as possible.

Test /karma.conf.js

module.exports = function (config) { config.set({ // requirejs may need to be listed before other modules (see https://github.com/princed/karma-chai-plugins#limited-requirejs-support) frameworks: ["requirejs", "mocha", "chai"], files: [ // load the RequireJS config files first {pattern: "client/app/require-shared.js", watched: false}, {pattern: "test/require-test.js", watched: false}, // set included to false for files to be loaded via RequireJS {pattern: "client/**/*.js", included: false }, {pattern: "bower_components/**/*.js", included: false, watched: false}, // Mocha stuff {pattern: "test/unit/mocha.conf.js", watched: false}, // test files {pattern: "test/unit/**/pageSelectorTest.js", included: false } ], exclude: [ "client/app/bootstrap.js", "client/app/require-main.js", "*.conf.js" ], reporters: ["spec"], // enable / disable watching file and executing tests whenever any file changes autoWatch: false, browsers: [ "PhantomJS" ], singleRun: true }); }; 

test / block / mocha.conf.js

 window.mocha.setup({ ui: "tdd" }); 

test / block / MyTest.js

 define([ "angular-mocks" ,"app" ], function () { "use strict"; var MODULE_NAME = "PageSelector"; var assert = chai.assert; suite("Unit testing " + MODULE_NAME, function() { suite(MODULE_NAME + " module", function () { var appModule; setup(function () { // "ng" and "ngMock" modules automatically loaded appModule = angular.mock.module(MODULE_NAME); console.log(appModule); }); // setup(function () { // angular.mock.inject(function () { // // }); // }); test("should exist", function () { assert.isDefined(appModule, "module exists"); }); }); // end module tests }); }); 

I will skip posting the entire RequireJS configuration. I'm sure I get angular and angular-mocks because I already worked through these errors.

My Grunt file just has the ability to download karma.conf.js . grunt karma output:

 Running "karma:unit" (karma) task INFO [karma]: Karma v0.12.16 server started at http://localhost:9876/ INFO [launcher]: Starting browser PhantomJS INFO [PhantomJS 1.9.7 (Linux)]: Connected on socket WJUF8xogEo-XCG-8zzJX with id 10483911 PhantomJS 1.9.7 (Linux) LOG LOG: undefined Unit testing PageSelector PageSelector module βœ— should exist AssertionError: module exists: expected undefined to not equal undefined at /home/client/node_modules/chai/chai.js:925 at assertEqual (/home/client/node_modules/chai/chai.js:1402) at /home/client/node_modules/chai/chai.js:3627 at /home/client/node_modules/chai/chai.js:2648 at /home/client/test/unit/utility/pageSelectorTest.js:37 at callFn (/home/client/node_modules/mocha/mocha.js:4338) at /home/client/node_modules/mocha/mocha.js:4331 at /home/client/node_modules/mocha/mocha.js:4728 at /home/client/node_modules/mocha/mocha.js:4819 at next (/home/client/node_modules/mocha/mocha.js:4653) at /home/client/node_modules/mocha/mocha.js:4663 at next (/home/client/node_modules/mocha/mocha.js:4601) at /home/client/node_modules/mocha/mocha.js:4625 at done (/home/client/node_modules/mocha/mocha.js:4300) at callFn (/home/client/node_modules/mocha/mocha.js:4343) at /home/client/node_modules/mocha/mocha.js:4331 at next (/home/client/node_modules/mocha/mocha.js:4626) at /home/client/node_modules/mocha/mocha.js:4625 at done (/home/client/node_modules/mocha/mocha.js:4300) at callFn (/home/client/node_modules/mocha/mocha.js:4343) at /home/client/node_modules/mocha/mocha.js:4331 at next (/home/client/node_modules/mocha/mocha.js:4626) at /home/client/node_modules/mocha/mocha.js:4630 at timeslice (/home/client/node_modules/mocha/mocha.js:5763) PhantomJS 1.9.7 (Linux): Executed 1 of 1 (1 FAILED) ERROR (0.003 secs / 0.002 secs) Warning: Task "karma:unit" failed. Use --force to continue. Aborted due to warnings. 

If I change angular.mock.module(MODULE_NAME); on angular.module(MODULE_NAME); , assert works. What am I missing? (We apologize if there is not enough information above. I can post more as needed.)

+1
angularjs unit-testing karma-runner mocha
Jun 03 '14 at
source share
1 answer

I dug in angular -mocks.js. module is just a setup for inject . By itself, it does not actually load the module, for example, angular.module . I used it unnecessarily to test the "module level" where angular.module is suitable.

When entering the actual controller / directive / etc. testing, I will need a pair of module + inject .

+5
Jun 03 '14 at 19:22
source share



All Articles