Can';t为Angularjs设置业力和茉莉花

Can';t为Angularjs设置业力和茉莉花,angularjs,karma-jasmine,Angularjs,Karma Jasmine,我已经尝试了几个教程,并查看了这里提供的许多解决方案。我对Angular是个新手,目前正在尝试为一个相当大的水疗中心进行测试 我已完成以下教程: Angularjs应用程序设置 业力设置 我们的第一次测试 karma配置文件基本上是默认内容,文件中有一些引用,不包括: // list of files/patterns to load in the browser files: [ 'bower_components/angular/angular.js', 'bower_

我已经尝试了几个教程,并查看了这里提供的许多解决方案。我对Angular是个新手,目前正在尝试为一个相当大的水疗中心进行测试

我已完成以下教程:

  • Angularjs应用程序设置
  • 业力设置
  • 我们的第一次测试
karma配置文件基本上是默认内容,文件中有一些引用,不包括:

// 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'
],
我重新安装了整个测试实现,现在简单的测试又开始工作了。但尝试为控制器编写测试不起作用:

这是错误消息

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

   Uncaught ReferenceError: Logging is not defined
编写与doucmentation相同的测试时,会出现以下错误:

以下是测试代码:

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

换句话说:我如何让我的测试也加载应用程序依赖项

这可能是因为Karma以错误的顺序加载源文件。为了使Angular正常工作,必须在加载与该模块相关的任何组件、服务等之前加载每个模块

要解决此问题,您可以更改Karma配置,以确保首先加载模块文件

// list of files / patterns to load in the browser
files: [
    '../../bower_components/angular/angular.js',
    '../../bower_components/angular-mocks/angular-mocks.js',
    'app/**/*.module.js',
    'app/**/*.js'
],
这是假设您正在为角度模块使用某种命名约定(如上例中的*.module.js)。否则,您必须单独列出模块的路径

在每个(模块(“您的模块名称”)之前添加
=>来自app.js的角度应用程序名称”

karma.conf

files: [     // sample order. Include your files accordingly
            'src/bower_components/angular/angular.min.js',
            'src/bower_components/angular-mocks/angular-mocks.js',
             // some sample libraries 
            'src/bower_components/angular-cookies/angular-cookies.min.js',
            'src/bower_components/angular-ui-router/release/angular-ui-router.min.js',
            'src/bower_components/angular-resource/angular-resource.min.js',
            'src/bower_components/angular-sanitize/angular-sanitize.min.js',
            'src/bower_components/angular-loading-bar/build/loading-bar.min.js',

            'src/app/app.js',
            'src/app/**/*.js',
            'tests/unit/**/*.spec.js'
        ],
exclude: []

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

// 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
],

项目中没有.module.js文件。我是否只需要在karma.config文件中加载测试所需的文件?声明角度模块的文件,如下所示:
angular.module('app',[]))
是您的模块文件。Karma需要在加载任何其他角度文件之前加载该文件。一些人为此(和其他)使用命名约定
app.module.js
模块文件,以便于区分。我理解,现在我在文件的顶部添加了app.js文件:,但我仍然有相同的问题,包括
angular.mocks.js
依赖项。请检查我的更新答案。不过,您的路径可能不同,所以请仔细检查。angular.mocks.js已经包含在内。是的,我将加倍检查我的路径尝试删除你的
bower_组件
node_模块
文件夹并重新安装你的所有依赖项。我刚刚做了,简单的测试再次有效,它是否有效。我添加了行,但引用错误仍然相同。我现在编写的测试与测试示例o完全相同n angularjs文档。这意味着我缺少karma.config文件中文件下的som导入。你检查了我提供的repo吗?@Øysteinsel。你能通过githubyes共享你的示例测试吗?是的,我一直在/tests/unit下查看文件,我在我的解决方案中以相同的方式引用模块名称
// 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
],