无法实例化模块,KARMA

时间:2018-06-15 07:52:07

标签: angularjs unit-testing jasmine karma-jasmine karma-runner

我已经完成了使用AngularJS实现我的网站,现在,我必须进行单元测试以验证我的功能是否正常运行。

我在互联网上寻找了很多教程但显然,我的应用程序结构不允许使用karma和jasmin进行测试。

让我解释一下,我有一个只有一个页面HTML的网站网站,它与一个控制器(一个文件.js)链接我从来没有用NPM安装Angular但是我用它导入了它:

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

我用我的控制器加载:

<script src="main.js"></script>

和其他一些导入的脚本。

我想用单元测试来尝试我的控制器,所以我创建了一个package.json文件并用npm安装了karma,jasmine和karma-cli。

我创建了一个名为“Tests”的文件夹并创建了一个test.js文件:

describe("App",() =>{ //Describe object type
  beforeEach(module('App')); //Load module
  describe('Ctrl',()=>{
    var Ctrl;
    beforeEach(inject( ($injector)=>{   //instantiate controller using $controller service
      $rootScope = $injector.get('$rootScope');
      $controller = $injector.get('$controller');
      $scope = $rootScope.$new();
    }));
    beforeEach(inject(($controller)=>{
      Ctrl = $controller("Ctrl");
    }));

    it("Should say hello",()=>{
      expect(Ctrl.msg).toBe("Hello");
    })
  })
})

但是当我使用时:

  

业力开始

它没有检测到我的控制器。

这是我的控制台输出:

output

这是我的karma.conf.js:

// Karma configuration
// Generated on Thu Jun 14 2018 16:51:15 GMT+0200 (Paris, Madrid (heure d’été))

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: [ 'Scripts/angular.js','Scripts/angular-mocks.js','main.js','Tests/*.js'
    ],


    // list of files / patterns 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
  })
}

我如何宣布我的控制器:

var app = angular.module('App', ['ngMaterial', 'ngMessages'])
app.controller('Ctrl', ['$rootScope', '$scope','$http','$timeout','$mdDialog','Global', 'projects', 'screens', 'users', 'licenses', function($rootScope, $scope, $http, $timeout, $mdDialog,Global, projects, screens, users, licenses) { 
...
}

这是我的树文件夹:

-Root
  |---node_modules
  |---Tests
  |     |---test.js
  |---Scripts
  |---index.html
  |---main.js   <--- controller of my index.html
  |---style.css
  |---someFactory.js

我认为我没有以正确的方式做到这一点。请解释一下如何做到这一点。

0 个答案:

没有答案