guyja
guyja

Reputation: 917

How do I control the order files are loaded in karma config

I'm testing an Angular app with Karma. I've got everything working, but it seems like I'm doing something wrong.

https://gist.github.com/guyjacks/7bca850844deb612e681

Karma will throw the following error if I comment out 'app/notes/notes.main.js' :

Uncaught Error: [$injector:nomod] Module 'notes.main' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument. http://errors.angularjs.org/1.4.3/$injector/nomod?p0=notes.main at /Users/guyjacks/projects/adr-demo/node_modules/angular/angular.js:1958

I don't want to have to manually list each application file to control the order in which each file loads. Am I don't something wrong or do I just have to list each file in the order I want?

---- Solution based on the accepted answer ----

My app is organized into modules as recommended by the Angular Style Guide: https://github.com/johnpapa/angular-styleguide.

'app/app.module.js',
'app/**/*.module.js',
'app/**/*.service.js',
'app/**/*.controller.js',
'app/**/*.directive.js',
'app/**/*.js'

I don't think the following lines are necessary above

'app/**/*.service.js', 
'app/**/*.controller.js',
'app/**/*.directive.js' 

when each module has an angular module declared in the *.module.js file like my app does.

That said, if you did need to explicitly load services before controllers & controllers before directives then this would be the way to do it.

Upvotes: 1

Views: 1625

Answers (1)

Moncef Hassein-bey
Moncef Hassein-bey

Reputation: 1361

Update : I could not see your karma file, now Gist link is fixed.

The point in notes[.]main.js is causing the problem,

So, 'app/**/*.js' is not matching notes.main.js.

Try now like this : app/**/*. *.js

=============================================================

Before update :

You have to load the modules that you app depends on, in karma config. file :

module.exports = function(config) {
  config.set({

   .......

   // list of files / patterns to load in the browser
   files: [
    './client/app/vendors/angular/angular.js',

    // =====>  load Your modules here ...

    './client/app/app.js',
    './client/app/controllers/*.js',
    './client/app/directives/*.js',
    './client/app/services/*.js',
    './test/client/unit/**/*.js'
],
.....

}) }

Upvotes: 1

Related Questions