2017-01-18 3 views
1

Ich bin neu in Karma, also könnte der Fehler sehr einfach sein.Winkelmodul ist nicht verfügbar Karma Jasmine

Es ist meine karma.conf.js

Datei
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', 
     'bower_components/angular-mocks/angular-mocks.js', 
     'bower_components/angular-resource/angular-resource.js', 
     'app/*.js', 
     'test/*.js', 
     'app/**/*.js', 
     'test/**/*.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 
    port: 9876, 


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


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

    // Concurrency level 
    // how many browser should be started simultaneous 
    concurrency: Infinity 
    }) 
} 

Innen app directory meine js und html Dateien befinden.

enter image description here

Die index.html wie folgt aussieht:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Example - example-heroComponentSimple-production</title> 

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script> 

    <script src="index.js"></script> 
    <script src="heroDetail.js"></script> 

</head> 
<body ng-app="heroApp"> 
    <!-- components match only elements --> 
<div ng-controller="MainCtrl as ctrl"> 
    <b>Hero</b><br> 
    <hero-detail hero="ctrl.hero"></hero-detail> 
</div> 
</body> 
</html> 

Und index.js wie folgt aussieht:

(function(angular) { 
    'use strict'; 
    angular.module('heroApp', []).controller('MainCtrl', function MainCtrl() { 
     this.hero = { 
      name: 'Miles Bronson' 
     }; 
    }); 
})(window.angular); 

jetzt in meiner test spec Datei Ich habe versucht:

describe('MainController',function(){ 
    var $rootScope, 
     $scope, 
     controller; 
    beforeEach(function(){ 
     module('heroApp'); 

     inject(function($injector){ 
      $rootScope = $injector.get('$rootScope'); 
      $scope = $rootScope.$new(); 
      controller = $injector.get('$controller')('MainCtrl',{$scope: $scope}); 
     }); 
    }); 

    describe('Initialization',function(){ 
     it('should initialize name of the hero',function(){ 
      expect('$scope.hero.name').toEqual('Miles Bronson'); 
     }); 
    }); 

}) 

Aber es sagte Chrome 55.0.2883 (Windows 8.1 0.0.0) ERROR Uncaught Error: [$injector:nomod] Module 'heroApp' 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.6.1/$injector/nomod?p0=heroApp at bower_components/angular/angular.js:2183.

Was mache ich falsch?

Antwort

1

Dies ist wahrscheinlich, weil Dateien geladen werden, um nicht angegeben ist und Karma lädt nur die Quelldateien in alphabetischer Reihenfolge, also heroDetail.js kommt zuerst, aber heroApp Modul in index.js definiert ist. Versuchen Sie, Ihre Karma-Konfiguration wie folgt zu ändern:

files: [ 
    'bower_components/angular/angular.js', 
    'bower_components/angular-mocks/angular-mocks.js', 
    'bower_components/angular-resource/angular-resource.js', 
    'app/index.js', 
    'app/heroDetail.js', 
    'test/*.js', 
    'app/**/*.js', 
    'test/**/*.js' 
], 
+0

Ehrfürchtig. Sparte den Kopfschmerzmann! Als Anfänger war es neu für mich. Danke vielmals . – StrugglingCoder

+0

@StrugglingCoder Sie begrüßen. Wenn meine Antwort Ihnen geholfen hat, das Problem zu lösen, markieren Sie es bitte als akzeptiert –

Verwandte Themen