Karma - 未知提供者:$scopeProvider
Karma - Unknown Provider: $scopeProvider
我得到 - Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope
当 运行 以下测试时:
describe('mainCtrl', function () {
beforeEach(module('app'));
var controller, scope;
var window = {
open: function (url, target, specs) {
var spec, specKey;
this.href = url;
this.target = target;
// Parse through the spec string to grab the parameters you passed through
var specArray = specs.split(',');
for (specKey in specArray) {
spec = specArray[specKey].split('=');
this[String.trim(spec[0])] = String.trim(spec[1]);
}
}
};
beforeEach(inject(function ($controller, $window, $rootScope) {
scope = $rootScope.$new();
controller = $controller('mainCtrl', {$scope: scope});
window = $window;
}));
describe('$scope.popup1', function () {
it('should open a popup window when ISIN hyperlink is clicked within grid, passing ISIN object s values to shareDataService', inject(function ($window, $scope) {
spyOn($window, 'open').and.callFake(function () {
return true;
});
scope.popup1()
expect(window.href).toEqual("views/Box_Ladder.html");
expect(window.target).toEqual("_blank");
expect(window.height).toEqual(400);
expect(window.width).toEqual(700);
})
)
})
});
但我不知道为什么。我已经注入了范围(据我所知)并在我的 karma.conf.js 文件中包含了 angular-mocks。
这是因为您试图将 $scope
注入 it
函数:
it('should open a popup window ...', inject(function ($window, $scope)
只要删除它,它就会起作用:
it('should open a popup window ...', inject(function ($window)
就像错误状态一样,没有 $scopeProvider
。测试时,您必须手动创建范围并分配它们,就像您在创建控制器时所做的那样:
scope = $rootScope.$new();
controller = $controller('mainCtrl', {$scope: scope});
我得到 - Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope
当 运行 以下测试时:
describe('mainCtrl', function () {
beforeEach(module('app'));
var controller, scope;
var window = {
open: function (url, target, specs) {
var spec, specKey;
this.href = url;
this.target = target;
// Parse through the spec string to grab the parameters you passed through
var specArray = specs.split(',');
for (specKey in specArray) {
spec = specArray[specKey].split('=');
this[String.trim(spec[0])] = String.trim(spec[1]);
}
}
};
beforeEach(inject(function ($controller, $window, $rootScope) {
scope = $rootScope.$new();
controller = $controller('mainCtrl', {$scope: scope});
window = $window;
}));
describe('$scope.popup1', function () {
it('should open a popup window when ISIN hyperlink is clicked within grid, passing ISIN object s values to shareDataService', inject(function ($window, $scope) {
spyOn($window, 'open').and.callFake(function () {
return true;
});
scope.popup1()
expect(window.href).toEqual("views/Box_Ladder.html");
expect(window.target).toEqual("_blank");
expect(window.height).toEqual(400);
expect(window.width).toEqual(700);
})
)
})
});
但我不知道为什么。我已经注入了范围(据我所知)并在我的 karma.conf.js 文件中包含了 angular-mocks。
这是因为您试图将 $scope
注入 it
函数:
it('should open a popup window ...', inject(function ($window, $scope)
只要删除它,它就会起作用:
it('should open a popup window ...', inject(function ($window)
就像错误状态一样,没有 $scopeProvider
。测试时,您必须手动创建范围并分配它们,就像您在创建控制器时所做的那样:
scope = $rootScope.$new();
controller = $controller('mainCtrl', {$scope: scope});