0
votes

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);
});
1

1 Answers

0
votes

Looks like in one of your angularjs file, dependency injection parameters are not matching. We would be able to help more if you can show content of 'src/app/app.js', 'src/app/spec/testSpec.js' files.

I think you need to add support of requirejs in your karma.conf.js file. Edit the frameworks line and add requirejs also.

frameworks: [ 'jasmine', 'requirejs' ],//add requirejs support
 // 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',
    'vendor/requirejs/require.js', //load requirejs file
    'src/app/app.js',
    'src/app/spec/testSpec.js'
],