I am trying to execute angular - jasmine test cases in karma. I have requirejs is also in my program . I am getting some errors . As I am newbie for both jasmine and karma , I dont know how to write files for karma files section. Whether it should include all the files from my code (external libraries,source files and test files )? Following code is my karma.conf.js :
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'https://code.jquery.com/jquery-1.11.2.min.js',
'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js',
'src/app/app.js',
'src/app/spec/testSpec.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: {
},
// 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
});
};
And I am getting following error :
Uncaught Error: Mismatched anonymous define() module: function (angular, $) {
My test specs are :
describe('Testing routes', function() {
beforeEach(module('myApp'));
var location, route, rootScope;
beforeEach(inject(
function( _$location_, _$route_, _$rootScope_ ) {
console.log("At inject method");
location = _$location_;
route = _$route_;
rootScope = _$rootScope_;
}));
describe('home route', function() {
it('should load the home page on successful load of /', function() {
location.path('/');
rootScope.$digest();
expect(route.current.controller).toBe('homeController');
});
});
});
My module starts with define of require like :
define(['angular', 'jquery'], function(angular, $) {
angular
.module('myApp', [])
.config(['$routeProvider', '$locationProvider', routeConfig])
.config(['$httpProvider', errorHandler])
.run(initHome);
});