I'm using angular full stack for development, my karma.conf.js file is
files: [ 'app/bower_components/jquery/jquery.js', 'app/bower_components/angular/angular.js', 'app/bower_components/angular-mocks/angular-mocks.js', 'app/bower_components/angular-cookies/angular-cookies.js', 'app/bower_components/angular-resource/angular-resource.js', 'app/bower_components/angular-route/angular-route.js', 'app/bower_components/angular-sanitize/angular-sanitize.js', 'app/bower_components/angular-scenario/angular-scenario.js', 'app/scripts/controllers/*.js', 'app/scripts/directives/*.js', 'app/scripts/services/*.js', 'app/scripts/app.js', 'lib/routes.js', 'test/karma/unit/**/test.spec.js' ],
Test Spec:
'use strict'; (function() { describe('App', function() { describe('TestController', function() { beforeEach(function() { this.addMatchers({ toEqualData: function(expected) { return angular.equals(this.actual, expected); } }); }); // Load the controllers module beforeEach(module('ratefastApp')); // Initialize the controller and a mock scope var TestController, mockUserResource, scope, $httpBackend, $routeParams, $location; // The injector ignores leading and trailing underscores here (i.e. _$httpBackend_). // This allows us to inject a service but then attach it to a variable // with the same name as the service. beforeEach( inject(function($controller, $rootScope, _$location_, _$routeParams_, _$httpBackend_) { scope = $rootScope.$new(); TestController = $controller('TestController', { $scope: scope }); $routeParams = _$routeParams_; $httpBackend = _$httpBackend_; $httpBackend.when('GET', '/api/test/page/:pagenum') .respond([{title: 'test'}]); $location = _$location_; })); }); }); });
On running the above I'm getting $injector:nomod Module is not available
.
The module(s) needs to be loaded in your karma files before the rest of the application.
This is because "Calling angular.module without the array of dependencies when the module has not yet been defined causes this error to be thrown" docs.angularjs.org. Therefore, you must explicitly load the files before the rest of your application.
In your Karma.config javascript files:
'app/bower_components/jquery/jquery.js', 'app/bower_components/angular/angular.js', 'app/bower_components/angular-mocks/angular-mocks.js', 'app/bower_components/angular-cookies/angular-cookies.js', 'app/bower_components/angular-resource/angular-resource.js', 'app/bower_components/angular-route/angular-route.js', 'app/bower_components/angular-sanitize/angular-sanitize.js', 'app/bower_components/angular-scenario/angular-scenario.js', 'app/scripts/app.js', // Load your module before the rest of your app. 'app/scripts/controllers/*.js', 'app/scripts/directives/*.js', 'app/scripts/services/*.js', 'lib/routes.js', 'test/karma/unit/**/test.spec.js'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With