我正在尝试使用Jasmine编写一个简单的测试。测试检查$scope.testFlag
是否设置为false。
这是我的测试代码
describe('Abc Controller', function() {
var $scope = null;
var ctrl = null;
//you need to indicate your module in a test
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
ctrl = $controller('abcController', {
$scope: $scope
});
}));
// test 1
it('testFlag should be set to False', function() {
expect( $scope.testFlag).toEqual(false);
});
});
但由于某种原因,我收到了这个错误:
Error: Unknown provider: ConfigProvider <- Config <- collectionMetaFactory
以下是我的应用程序的app.js在testRunner.html
var app = angular.module('myApp')
app.constant('Config',
{
baseURL : serviceURL,
httpTimeout : 3600000 // 1 minute
});
app.config(function($logProvider) {
$logProvider.debugEnabled(true);
});
我错过了什么?
这是控制器的代码段
app.controller('abcController', function ($scope, $log,abcFactory, Config) {
$scope.testFlag = false;
// more code follows
});
如果您需要查看更多应用程序代码(如工厂,服务和控制器),请告诉我们
答案 0 :(得分:0)
您尚未使用Config
提供测试,因此无法识别Config
是什么,这就是您收到此错误的原因。
解决方案是使用Config
模块将$provide
注入测试。方法如下:
describe('Abc Controller', function() {
var $scope = null;
var ctrl = null;
var Config = {
baseURL : 'someURL',
httpTimeout : 3600000 // 1 minute
};
beforeEach(function(){
beforeEach(module('myApp'));
module(function (_$provide_) {
$provide = _$provide_;
$provide.value('Config', Config);
});
});
//you need to indicate your module in a test
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
ctrl = $controller('abcController', {
$scope: $scope
});
}));
// test 1
it('testFlag should be set to False', function() {
expect( $scope.testFlag).toEqual(false);
});
});
这应该成功运行测试。
希望这有助于其他人面临类似的问题。