angularjs - 无法为 Angularjs 设置 Karma 和 Jasmine

标签 angularjs karma-jasmine

我尝试了几个教程并查看了此处提供的许多解决方案。我是 Angular 的新手,目前正在尝试为一个相当大的 SPA 设置测试。

正在关注 this我完成的教程:

  • Angularjs 应用设置
  • karma 设置
  • 我们的第一个测试

karma config文件基本都是默认内容,文件中有一些引用和排除:

// list of files/patterns to load in the browser
 files: [
    'bower_components/angular/angular.js',
    'bower_components/angular-mocks/angular-mocks.js',
    'app/app.js',
    'JavaScript.spec.js'
],

我重新安装了整个测试实现,现在简单测试再次运行。但是尝试为 Controller 编写测试是行不通的:

这是错误信息 error output

我在 karma 配置文件中更改了引用 bower_components 和应用程序文件的路径。现在运行 karma 的 shell 从 app.js 文件返回一条错误消息,说:

   Uncaught ReferenceError: Logging is not defined

编写与文档中相同的测试,会出现以下错误:

error message

测试代码如下:

describe('nyKladdController', function () {
    beforeEach(module('app'));

    var $controller; 
    beforeEach(inject(function (_$controller_) {
        $controller = _$controller_; 
    }));


    describe('$scope.mixTable', function () {
        it('is false', function () {
            var $scope = {};
            var controller = $controller('nyKladdController', { $scope: $scope }); 
            expect($scope.mixTable).toBeFalsy();
        });
    }); 
});

从报错信息可以看出:在应用模块之后,测试文件开始加载应用依赖项。这是 app.js 文件:

(function () {
    'use strict';
    angular.module('app', [
        'ngAnimate', 'ngRoute', 'ngSanitize', 'ngResource', 'ngMessages',
        'AdalAngular', 'config', 'angular.filter',
        'ui.bootstrap', 'ui.mask', 'ui.select', 'ui.validate',
        'angular-loading-bar', 'ui.tree', 'ui.tree-filter', 'checklist-model'
    ]);
})(); 

换句话说:我怎样才能让我的测试也加载应用程序依赖项。

最佳答案

我必须将所有应用依赖项从 app.js 加载到 karma.config 文件中。现在 karma 配置中的文件数组如下所示:

// list of files / patterns to load in the browser
files: [
    //bower modules
    './bower_components/angular/angular.js',
    './bower_components/angular-mocks/angular-mocks.js',
    './bower_components/angular-ui-mask/src/mask.js',
    './bower_components/angular-ui-select/dist/select.js',
    './bower_components/angular-ui-tree-filter/dist/angular-ui-tree-filter.js',
    './bower_components/angular-ui-tree/dist/angular-ui-tree.js',
    './bower_components/angular-ui-validate/dist/validate.js',
    './bower_components/angular-loading-bar/build/loading-bar.js',
    // node modules
    './node_modules/angular-animate/angular-animate.js',
    './node_modules/angular-route/angular-route.js', 
    './node_modules/angular-sanitize/angular-sanitize.js',
    './node_modules/angular-resource/angular-resource.js', 
    './node_modules/angular-messages/angular-messages.js',
    './node_modules/adal-angular/dist/adal-angular.min.js',
    './node_modules/angular-filter/dist/angular-filter.js',
    './node_modules/angular-ui-bootstrap/dist/ui-bootstrap.js', 
    './node_modules/bower-config/lib/Config.js',
    './node_modules/checklist-model/checklist-model.js',
    //app file
    './app/app.js',
    './app/common/config/config.js',
    //test files etc..
    'JavaScript.spec.js',
    './app/produkt/ny/controllers/*.js' // tester å hente inn controller som refereres i test filen
],

关于angularjs - 无法为 Angularjs 设置 Karma 和 Jasmine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46358155/

相关文章:

javascript - 未调用 promise 中的函数 it()

javascript - Karma 不适用于 ES6

javascript - 如何将样式应用于发出的指令模板?

javascript - 使用 Angular AddEventListener 并将其删除

javascript - 使用 array.push() 时,Ng-repeat 似乎没有为每个项目创建单独的范围

javascript - 如何在 iframe 中维护 Angular 应用程序的页面重新加载路线?

angularjs - beforeEach 在 angularjs/requirejs 场景中没有通过 Karma/Jasmine 调用

javascript - AngularJS:编译指令的输出

html - Jasmine-Tests - 获取 <ng-template> 中的元素( Angular )

unit-testing - ReferenceError : ga is not defined [Ionic 2. 2 使用 Karma 进行单元测试]