gpt4 book ai didi

javascript - 在 Angular 应用程序的 Karma 测试文件中包含依赖项?

转载 作者:IT王子 更新时间:2023-10-29 03:06:02 27 4
gpt4 key购买 nike

我正在尝试开始使用 Karma 测试,将它们添加到现有的 Angular 应用程序中。

这是我的主要应用定义文件:

angular
.module('myApp', [
'ngRoute',
'moduleAdherence'
]);

这是我的 Controller 文件:

   angular
.module('moduleAdherence', [])
.controller('AdherenceCtrl', ['$scope', function ($scope) {
$scope.awesomeThings = [1,2,3,4];
}]);

这是我第一次尝试文件:

describe('Controller: AdherenceCtrl', function () {
beforeEach(module('myApp'));
var MainCtrl,
scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('AdherenceCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(4);
});
});

当我尝试使用 grunt test 运行它时,它失败并出现以下错误:

Uncaught Error: [$injector:nomod] Module 'd3' is not available! 
You either misspelled the module name or forgot to load it.
If registering a module ensure that you specify the dependencies
as the second argument.
http://errors.angularjs.org/1.2.0/$injector/nomod?p0=d3
at /Users/me/Dropbox/projects/myapp/app/bower_components/angular/angular.js:1498

我不明白这个,因为这个 Controller 没有使用D3。我确实在应用程序的其他地方使用了 D3,在一个指令中,但我没有在模块中注册它(我使用外部 D3 文件)。

为什么 Karma 注意到 D3?不应该没有 D3 就可以测试这个 Controller 吗?

最佳答案

在 karma 配置文件 (karma.conf.js) 中,您需要定义所有库。

等等

    // list of files / patterns to load in the browser
files: [
'app/lib/angular/angular.js',
'app/lib/angular-route/angular-route.js',
'test/lib/angular-mocks.js',
'app/app.js',
'app/controllers/*.js',
'app/services/*.js',
'app/*',
'test/spec/**/*.js'
],

关于javascript - 在 Angular 应用程序的 Karma 测试文件中包含依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20132823/

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