gpt4 book ai didi

angularjs - Jasmine 测试中的未知提供者错误

转载 作者:行者123 更新时间:2023-12-04 06:24:55 25 4
gpt4 key购买 nike

我是 angularjs 的新手。我正在尝试编写的 Jasmine 测试遇到问题。我收到此错误 - “错误:[$injector:unpr] 未知提供程序:$routeProvider”。实际的应用程序运行良好,我只在测试中遇到此错误。

[09:13:05] Starting 'test'...
[09:13:05] Starting 'test:unit'...
INFO [karma]: Karma v0.12.37 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Mac OS X 0.0.0)]: Connected on socket -W6J4Ey8gUxLNUpoIFy1 with id 43527657
PhantomJS 1.9.8 (Mac OS X 0.0.0) sourceControl should convert date FAILED
Error: [$injector:modulerr] Failed to instantiate module com.cmp.mod.features.sources due to:
Error: [$injector:unpr] Unknown provider: $routeProvider
http://errors.angularjs.org/1.4.7/$injector/unpr?p0=%24routeProvider

这是我的 Controller ,

//controller
angular.module('com.cmp.mod.features.sources')
.controller('SourceControl', function ($modalInstance, $scope, source, sourceHelper) {
'use strict';

$scope.close = function() {
$modalInstance.dismiss();
};

$scope.convertDate = function(milliseconds) {
return sourceHelper.epochToLocaleDateString(milliseconds);
};

$scope.source = source;
});

//test code
describe('SourceControl', function(){
angular.mock.module('ngRoute', []);

beforeEach(module('com.cmp.mod.features.sources'));

var scope;
var $modalInstance = {}, mockSource={}, sourceHelper;


beforeEach(inject(function ($controller, $rootScope, _sourceHelper_) {
scope = $rootScope.$new();
sourceHelper = _sourceHelper_;
$controller('SourceControl', {
$modalInstance: $modalInstance,
$scope: scope,
source: mockSource,
sourceHelper: sourceHelper
});
}));

it('should convert date', function() {
expect(true).toBe(true);
});

});

//component in the module that uses the routeProvider
angular.module('com.cmp.mod.features.adsources')

.config(function ($routeProvider) {
'use strict';

$routeProvider
.when('/sources', {
templateUrl: 'src/features/sources/sources.part.html',
controller: 'SourcesControl',
resolve: {
sources: function(Source) {
return Source.query().$promise;
}
}
})

这是我的 karma.conf.js 文件,

module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '../',

frameworks: ['jasmine'],

// list of files / patterns to load in the browser
files: [
'app/vendor/angular/angular.js',
'app/vendor/angular-route/angular-route.js',
'app/vendor/angular-cookies/angular-cookies.js',
'app/vendor/angular-resource/angular-resource.js',

'app/vendor/jquery/dist/jquery.js',
'app/vendor/bootstrap/dist/js/bootstrap.js',

'app/vendor/angular-bootstrap/ui-bootstrap.js',
'app/vendor/angular-bootstrap/ui-bootstrap-tpls.js',

'app/vendor/angular-mocks/angular-mocks.js',
'app/src/core/declarations.js',
'app/src/**/*.js',
'app/src/**/*.spec.js'
],

我正在使用的 angularjs 版本 - 1.4.7

最佳答案

在测试中,您模拟了 ngRoute 模块,因此您没有 $routeProvider。您必须注入(inject)实际 模块。尝试:

beforeEach(function () {
module('ngRoute');
module('com.cmp.mod.features.sources');
});

并删除以下内容:

angular.mock.module('ngRoute', []);

关于angularjs - Jasmine 测试中的未知提供者错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130798/

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