Karma tests scheint nicht zu laden meinem Angularjs controller

Ich mein Winkel-tests mit karma, meine Anwendung läuft im browser, aber tests fehlschlägt, und ich bin zu Ahnen, falsche Einstellungen.

Hier sind der Controller und tests :

//app/scripts/controllers/main.js

'use strict';

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

  }); 

Hier ist die test Datei :

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

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

Den Fehler, Ausgang

 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)

Frage ich mich, warum dies geschehen, habe ich versucht zu finden, einige Dokumentation über das karma-Initialisierung mit angularjs. Aber die meisten Unterlagen, die ich gefunden, die ist nur dummy-tutorial, die Wiederholung der gleichen Muster ( wie die dummy-todo-Liste, aber mit Handys ... )

Es scheint, dass $controllerProvide.registrieren Sie sich nicht auflösen kann, mein Controller-Namen.
Aber die Richtlinien sind die tests korrekt funktioniert ...

Vielen Dank für Ihre Aufmerksamkeit.

Bearbeiten Notizen : ersetzt habe ich den controller PersonCtrl von MainCtrl in diesem thread, weil Es war verwirrend, die Menschen über, wo Sie zu suchen. Jetzt MainCtrl ist die einfachste scheitern Beispiel, das ich gefunden.

Dieses Problem betrifft nur meinen Controller, ( alle von Ihnen ), aber tests für Dienste und Richtlinien arbeiten wie erwartet

  • Versuch : verschieben der variable Person aus beforeEach(), weil Modul Person sollte definiert werden, ersten
  • Gerade bearbeitete code. Wie Sie sehen können, ist das Problem immer noch das gleiche.
  • Ich habe die Beispiel. Und wirklich dummy-code, um missleading
InformationsquelleAutor user2481743 | 2014-01-09
Schreibe einen Kommentar