Can';t为Angularjs设置业力和茉莉花
我已经尝试了几个教程,并查看了这里提供的许多解决方案。我对Angular是个新手,目前正在尝试为一个相当大的水疗中心进行测试 我已完成以下教程: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_
- Angularjs应用程序设置
- 业力设置
- 我们的第一次测试
// 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
],