javascript - 'undefined' is not an object (evaluating 'app.register.service') when using requirejs, angularamd and karma -


in our angularjs project, using requirejs + angularamd manage dependencies. application works fine, we're having problems when running jasmine tests using karma.

this error:

    typeerror: 'undefined' not object (evaluating 'app.register.service')   @ /home/bcatarino/projects/spr/target-grunt/js/app/model/pressrelease.js:3 

it seems our app not correctly injected our test.

the source code test:

'use strict';  define(['angularamd', 'pressrelease'], function(angularamd, pressrelease) {      describe('pressreleasemodel test', function () {          var scope, pressreleasemodel;          var inject = angularamd.inject;          inject(function (pressrelease) {             pressreleasemodel = pressrelease;         });           it('should add non-existing recipient', function(pressrelease) {             expect(pressreleasemodel.get().recipients.length, 0);         });     }); }); 

pressrelease coded this:

define([ 'app', 'angularamd' ], function(app, angularamd) {      app.register.service('pressrelease', function() {      //stuff going on here      } );  }); 

so app.register undefined , can't figure out why.

as requested, here's karma.conf:

module.exports = function(config) {     config.set({         basepath: '../../../',         files: [             {pattern: 'js_components/angular/angular.js', watched: false, included: false},             {pattern: 'js_components/angular-mocks/angular-mocks.js', included: false},             {pattern: 'js_components/angularamd/angularamd.js', included: false},             {pattern: 'js_components/angular-ui-router/release/angular-ui-router.min.js', included: false},             {pattern: 'js_components/angular-ui-utils/ui-utils.js', included: false},             {pattern: 'js/test/test-app.js', watched: true, included: false},             {pattern: 'js/app/model/pressrelease.js', watched: true, included: false},             {pattern: 'js/test/model/pressreleasemodelspec.js', watched: true, included: false},             'js_components/requirejs/require.js',             'js/test/test-main.js'         ],         exclude: [],         plugins: [             'karma-jasmine',             'karma-phantomjs-launcher',             'karma-chrome-launcher',             'karma-requirejs'         ],         frameworks: ['jasmine', 'requirejs'],         junitreporter: {             outputfile: 'karma-test-results.xml',             suite: ''         },         port: 9876,         runnerport: 9100,         browsers: ['phantomjs', 'chrome'],         autowatch: true,         preprocessors: {             'template/**/*.html': ['html2js']         },         nghtml2jspreprocessor: {             // strip file path             stripprefix: 'web',             modulename: 'templates'         },         loglevel : config.log_info     }) }; 

anyone has ideas? we're following example, we're not finding answer: https://github.com/marcoslin/angularamd

thanks

i solved removing angularamd unit tests. created bridge redirects app.register.method app.method app angular module.

define([     'angularmocks',     'angular' ], function () {     'use strict';     var myapp = angular.module('spr', []);      myapp.register = {};     var enhancemodule = function (method) {         var register = myapp.register;         register[method] = angular.bind(myapp, myapp[method]);     };      angular.foreach([         'controller',         'directive',         'filter',         'factory',         'service',         'constant',         'value',         'animation']     , enhancemodule);      console.info('enhanced angular.module');     return angular.module('spr'); }); 

this test:

define(['angularmocks', 'app', 'js/app/model/pressrelease'], function (mocks) {      describe('press release model', function () {          var service;         beforeeach(mocks.module('spr'));         beforeeach(mocks.inject(function (pressrelease) {             service = pressrelease;         }));          it('should something', function () {             var res = service.servicecall();             expect(res).tobe(1);         });      }); }); 

Comments

Popular posts from this blog

Why can rails not find a route created by a helper? -

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -