Karma tests ne semblent pas à charger mon Angularjs contrôleur

Je lance mon angulaire des tests avec le karma, ma demande est en cours d'exécution fine dans le navigateur, mais les tests échoue et que je suis se doutant de mauvais paramètres.

Ici sont les contrôleurs et les tests :

//app/scripts/controllers/main.js

'use strict';

angular.module('GloubiBoulgaClientApp')
  .controller('MainCtrl', function ($scope) {

  }); 

Voici le fichier de test :

'use strict';

describe('Controller: MainCtrl', function () {

  //load the controller's module
  beforeEach(module('GloubiBoulgaClientApp'));

  var MainCtrl,
    scope;  

  //Initialize the controller and a mock scope
  beforeEach(inject(function ($controller, $rootScope) {
    scope = $rootScope.$new();
    MainCtrl = $controller('MainCtrl', {
      $scope: scope
    });
  }));  

  it('should attach a list of awesomeThings to the scope', function () {
    expect(true).toBe(true);
  });
});

Le karma conf

module.exports = function(config) {
  config.set({
    //base path, that will be used to resolve files and exclude
    basePath: '', 

    //testing framework to use (jasmine/mocha/qunit/...)
    frameworks: ['jasmine'],

    //list of files /patterns to load in the browser
    files: [
      'app/bower_components/angular/angular.js',
      'app/bower_components/angular-mocks/angular-mocks.js',
      'app/bower_components/angular-resource/angular-resource.js',
      'app/bower_components/angular-cookies/angular-cookies.js',
      'app/bower_components/angular-sanitize/angular-sanitize.js',
      'app/scripts/*.js',
      'app/scripts/**/*.js',
      'test/mock/**/*.js',
      'test/spec/**/*.js'
    ],  

    //list of files /patterns to exclude
    exclude: [], 

    //web server port
    port: 8080,

    //level of logging
    //possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG
    logLevel: config.LOG_INFO,
    //enable /disable watching file and executing tests whenever any file changes
    autoWatch: true,


    //Start these browsers, currently available:
    //- Chrome
    //- ChromeCanary
    //- Firefox
    //- Opera
    //- Safari (only Mac)
    //- PhantomJS
    //- IE (only Windows)
    browsers: ['PhantomJS'],


    //Continuous Integration mode
    //if true, it capture browsers, run tests and exit
    singleRun: false
  });
};

L'erreur de sortie

 PhantomJS 1.9.2 (Linux) Controller: MainCtrl should attach a list of awesomeThings to the scope FAILED
         Error: [ng:areq] Argument 'MainCtrl' is not a function, got undefined
         http://errors.angularjs.org/1.2.8-build.2094+sha.b6c42d5/ng/areq?p0=MainCtrl&p1=not%20a%20function%2C%20got% 2
 0undefined
             at assertArg (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angula
 r.js:1362)
             at assertArgFn (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angu
 lar.js:1373)
             at --obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angular.js:6763
             at --obfuscated-path--GloubiBoulga/GloubiBoulgaClient/test/spec/controllers/main.js:15
             at invoke (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular/angular.j
 s:3704)
             at workFn (--obfuscated-path--GloubiBoulga/GloubiBoulgaClient/app/bower_components/angular-mocks/angular -mocks.js:2120)

Je me demande pourquoi cela arrive, j'ai essayé de trouver de la documentation sur le karma d'initialisation avec angularjs. Mais la plupart de la documentation que j'ai trouvé est que factice tutoriel qui sont en répétant le même motif ( comme le mannequin liste de choses à faire, mais avec les téléphones ... )

Il semble que $controllerProvide.registre ne parvient pas à résoudre mon contrôleurs de nom.
Mais les Directives tests sont travail correctement ...

Merci pour votre attention.

Modifier une Note : j'ai remplacé le contrôleur PersonCtrl par MainCtrl dans ce fil, car Il est source de confusion les gens pour savoir où chercher. Maintenant MainCtrl est le principe le plus simple exemple d'échec que j'ai trouvé.

Ce problème affecte seulement mon contrôleurs, les ( toutes ), mais les tests pour les Services et les Directives de travail comme prévu

À essayer : le déménagement de votre variable Person de beforeEach(), parce que le module Person doivent être définis en premier
Juste édité le code. Comme vous pouvez le voir, le sujet est toujours le même.
J'ai changé l'exemple. Et utilisé vraiment de code factice pour éviter missleading

OriginalL'auteur user2481743 | 2014-01-09