1

I am using folloing jasmine test case

'use strict';

describe('companyService', function() {

    var $httpBackend, companyService;

    beforeEach(angular.mock.module('myApp'));

    beforeEach(angular.mock.inject(function(_$httpBackend_ ,  _companyService_) {
        $httpBackend = _$httpBackend_;
        companyService = _companyService_;
    }));

    it('should return a promise for getCompany function', function() {
       // expect(typeof companyService.getCompany('foobar').then).toBe('function');
    }); 

});

i am getting the following error . as you can see above . i am not doing anything inside it block .

    minErr/<@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/bower_components/angular/angular.js:63:12
       loadModules/<@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/bower_components/angular/angular.js:4138:15
       forEach@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/bower_components/angular/angular.js:323:11
       loadModules@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/bower_components/angular/angular.js:4099:5
       createInjector@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/bower_components/angular/angular.js:4025:11
       workFn@C:/Users/userone/Documents/myAppPkg/myApp/WebApiRole/node_modules/angular-mocks/angular-mocks.js:2425:44
irefox 38.0.0 (Windows 8.1): Executed 1 of 1 (1 FAILED) ERROR (0.251 secs / 0.008 secs)

I assume this issue comes because of the angular.mock.inject method i have been using . because the execution does not enter the following block

beforeEach(angular.mock.inject(function(_$httpBackend_ , _companyService_) {
        $httpBackend = _$httpBackend_;
        companyService = _companyService_;
    }));

Karma.conf.js file

// Karma configuration
// Generated on Thu May 21 2015 16:24:51 

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: [
            'bower_components/angular/angular.js',
            'node_modules/angular-mocks/angular-mocks.js',
            'app/app.js',
            'app/*.js',
            'app/**/*.js',
            'app/**/**/*.js',
            'app/company/CompanyService.js',
            'test/company/*.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
        hostname: 'localhost',
        port: 44555,


    // 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: ['Firefox'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

can any one help me out with this . ?

3
  • 1
    Syntax looks correct. Have you setup the Karma config correctly to point the scripts? In particular the one containing companyService. Commented May 26, 2015 at 11:33
  • @WayneEllery thank you for your response . I have added the karma.conf.js file . Is there anyway to know that i have included all the dependencies in the karma.conf.js file . ? Commented May 26, 2015 at 11:48
  • I think you may be able to view the list in the console. Just make sure that they are set in files: karma-runner.github.io/0.12/config/files.html and when you run karma point it to the config file. Make sure it's using the config file Commented May 26, 2015 at 11:54

2 Answers 2

1

You should update the "karma-chrome-launcher" and "karma-firefox-launcher" in node_module. This may be solve the issue.

npm install karma-chrome-launcher

npm install karma-firefox-launcher

If you think the issue because of "angular.mock.inject " then one can use inject function.

But I think your unit test script is not getting chance for loading and execution.So,this will not reason for above error.

Thanks.

Sign up to request clarification or add additional context in comments.

1 Comment

i am using the latest launchers . Yes i have used and tried inject only . but it still gives the same error
1

I found out the solution for this problem. Turns out i have missed some dependencies in the karma.conf.js . When you missed dependencies , the $inject method does not get executed . What i did was , from the index.html , copied all the dependencies (from bower componants folder and node_modules folder) and put them in the karma.conf.js under files .

for example , i have copied all the file dependencies from index.html and put it under files

            'bower_components/angular/angular.js',
            'node_modules/angular-mocks/angular-mocks.js',

            'bower_components/jquery/dist/jquery.js',
            'bower_components/pnotify/pnotify.core.js',
            'bower_components/pnotify/pnotify.buttons.js',
            'bower_components/pnotify/pnotify.confirm.js',
            'bower_components/pnotify/pnotify.desktop.js',
            'bower_components/pnotify/pnotify.nonblock.js',
            'bower_components/pnotify/pnotify.callbacks.js',
            'bower_components/pnotify/pnotify.history.js',
            'bower_components/pnotify/pnotify.reference.js',

            'bower_components/jquery-ui/jquery-ui.min.js',
            'bower_components/bootstrap/dist/js/bootstrap.js',

            'js/fullcalendar.min.js',
            'js/daterangepicker.min.js',

            'bower_components/moment/moment.js',
            'bower_components/moment-timezone/builds/moment-timezone-with-data-2010-2020.js',

            'bower_components/angular-i18n/angular-locale_no.js',
            'bower_components/ng-file-upload/angular-file-upload.js',

            'bower_components/angular-ui-router/release/angular-ui-router.js',
            'bower_components/angular-bootstrap/ui-bootstrap-tpls.js',

            'bower_components/angular-translate/angular-translate.js',
            'bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js',

            'bower_components/angular-pnotify/src/angular-pnotify.js',

            'bower_components/angular-local-storage/angular-local-storage.js',

            'bower_components/angular-loading-bar/build/loading-bar.min.js',

            'bower_components/angular-moment/angular-moment.js',

            'bower_components/angular-bootstrap-switch/dist/angular-bootstrap-switch.js',
            'bower_components/bootstrap-switch/dist/js/bootstrap-switch.js',

            'app/app.js',
            'app/**/*.js',
            'test/**/*Spec.js'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.