我尝试了几个教程并查看了此处提供的许多解决方案。我是 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 编写测试是行不通的:
我在 karma 配置文件中更改了引用 bower_components 和应用程序文件的路径。现在运行 karma 的 shell 从 app.js 文件返回一条错误消息,说:
Uncaught ReferenceError: Logging is not defined
编写与文档中相同的测试,会出现以下错误:
测试代码如下:
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/