gpt4 book ai didi

angularjs - Jasmine/Karma 找不到 Angular 模块

转载 作者:行者123 更新时间:2023-12-03 07:58:20 25 4
gpt4 key购买 nike

我正在尝试使用 Jasmine 和 Karma 进行单元测试,但由于某种原因找不到我的 Angular 模块。我修改了示例中的代码:

karma.config.js:

files: [
'lib/angular.js',
'lib/angular-mocks.js',
'js/app.js',
'js/controllers.js',
'js/factories.js',
'tests/**/*.js'
]

应用程序.js:

var app = angular.module('app', ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider
.when('/test', {
templateUrl: 'views/test.html',
controller: 'TestCtrl'
})
.otherwise({redirectTo: '/'});
});

controllers.js:

app.controller('TestCtrl', function ($scope, $location) {
console.log('Test Controller');
$scope.isActive = function(route) {
return route === $location.path();
};
});

测试规范.js:

describe('TestCtrl testing', function () {
var scope, $location, createController;

beforeEach(inject(function ($rootScope, $controller, _$location_) {
$location = _$location_;
scope = $rootScope.$new();

createController = function () {
return $controller('TestCtrl', {
'$scope': scope
});
};
}));

it('should...', function () {
var controller = createController();
$location.path('/test');
expect($location.path()).toBe('/test');
expect(scope.isActive('/test')).toBe(true);
expect(scope.isActive('/contact')).toBe(false);
});
});

错误信息:错误:[ng:areq] 参数“TestCtrl”不是函数,未定义

我也尝试过:beforeEach(module('TestCtrl')),但没有帮助。

我错过了什么?

最佳答案

我可以看到两个问题。在描述部分必须有主模块注入(inject):

beforeEach(module('app'));

第二个问题是您忘记将 ngAnimate 模块添加到 Karma 文件配置数组:

files: [
'lib/angular.js',
'lib/angular-route.js', // <-- this guy
'lib/angular-mocks.js',
...
]

关于angularjs - Jasmine/Karma 找不到 Angular 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25958375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com