2014-03-03 26 views
1

我想單元測試我的AngularJS應用程序。我安裝並配置了Karma,但我無法使用該功能模塊。AngularJS Karma茉莉花不能調用模塊

錯誤消息:

第一個測試中遇到的聲明例外FAILED 類型錯誤:對象的屬性「模塊」 [對象的對象]不是在空值的函數 。 (C:/dev/tubs-web-reporting/TubsReporting.Web/app/test/controller.test.js:3:16) at C:/dev/tubs-web-reporting/TubsReporting.Web/app/test /controller.test.js:1:1

app.js:

angular.module('tufreport', ['tufreport.filters', 'tufreport.services', 'tufreport.directives', 'tufreport.controllers', 
    'ngRoute', 'ngAnimate', 'ui.directives', 'ui.bootstrap' 

controller.test.js:

describe('First Test', function(){ 
    beforeEach(module('tufreport')); 
}); 

karma.unit.conf.js :

// Karma configuration 
// Generated on Mon Mar 03 2014 14:14:15 GMT+1100 (Central Pacific Standard Time) 

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

    // base path, that will be used to resolve files and exclude 
    basePath: '.', 


    // frameworks to use 
    frameworks: ['jasmine'], 


    // list of files/patterns to load in the browser 
    files: [ 
    'Scripts/angular.js', 
    'Scripts/angular-mocks.js', 
    'Scripts/angular-*.js', 
    'Scripts/leaflet.js', 
    'app/js/app.js', 
    'app/js/services.js', 
    'app/js/filters.js', 
    'app/js/directives.js', 
    'app/js/controllers.js', 
    'Scripts/ui-bootstrap-*.js', 
    'app/test/controller.test.js' 

    ], 


    // list of files to exclude 
    exclude: [ 
     'Scripts/angular-scenario.js', 
    ], 


    // test results reporter to use 
    // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage' 
    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, currently available: 
    // - Chrome 
    // - ChromeCanary 
    // - Firefox 
    // - Opera (has to be installed with `npm install karma-opera-launcher`) 
    // - Safari (only Mac; has to be installed with `npm install karma-safari-launcher`) 
    // - PhantomJS 
    // - IE (only Windows; has to be installed with `npm install karma-ie-launcher`) 
    browsers: ['Chrome'], 


    // If browser does not capture in given timeout [ms], kill it 
    captureTimeout: 60000, 


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

我不想嘲笑任何東西到目前爲止,只是爲了能夠在我的服務上運行單個測試,但無法通過第一個beforeEach。

有什麼想法?

由於

回答

0

嘗試包括JASMINE並在對文件的陣列JASMINE_ADAPTER等;

files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 
    'Scripts/angular.js', 
    'Scripts/angular-mocks.js', 
    'Scripts/angular-*.js', 
    'Scripts/leaflet.js', 
    'app/js/app.js', 
    'app/js/services.js', 
    'app/js/filters.js', 
    'app/js/directives.js', 
    'app/js/controllers.js', 
    'Scripts/ui-bootstrap-*.js', 
    'app/test/controller.test.js' 
]; 
+3

現在這是depricated,並已取代Karma配置文件由 框架:['jasmine'], –

0

東西是沒有得到您的karma.conf.js正確加載文件

這是您的AngularJS的文件的正確名稱?

'Scripts/angular-*.js' 

我會推薦使用正則表達式加載所有的JS(這可能與問題無關)。

'app/scripts/*.js', 
'app/scripts/**/*.js' 

最後,確保您在app.js中的所有組件已加載到您的karma.conf.js文件中。您有:

tufreport.filters', 'tufreport.services', 'tufreport.directives', 'tufreport.controllers', 'ngRoute', 'ngAnimate', 'ui.directives', 'ui.bootstrap'

其中每一個都需要一個在karma.conf.js中定義的路徑,以便爲測試正確加載。

0

1.Try替換文件:[]你karma.config.js塊

files: [ 
    'Scripts/angular.js', 
    'Scripts/angular-mocks.js', 
    'Scripts/angular-*.js', 
    'Scripts/leaflet.js', 
    'app/js/services.js', 
    'app/js/filters.js', 
    'app/js/directives.js', 
    'app/js/controllers.js', 
    'app/js/app.js', 
    'Scripts/ui-bootstrap-*.js', 
    'app/test/controller.test.js' 

    ], 

2.inside app.js

angular.module('tufreport', ['tufreport.filters', 'tufreport.services', 'tufreport.directives', 'tufreport.controllers', 
'ngRoute', 'ngAnimate', 'ui.directives', 'ui.bootstrap']);