我正在使用 Angular Mocks 测试我的应用程序,当它尝试创建一些模块时,我遇到了这个问题。
describe('navRegisterOverrideSpec', function () {
var navigationServiceProvider;
beforeEach(module('wrapper'));
describe('remove un needed navs', function () {
var navigationService;
beforeEach(
inject(function ($injector) {
navigationService = $injector.get('navigationService');
}));
it('Should not have admin menu', function () {
var filtered = _.filter(navigationService.items, function (item) {
return item.id == 'admin_menu';
});
expect(filtered.length).toEqual(0);
});
});
});
下面是我得到的错误。
Error: [$injector:modulerr] Failed to instantiate module ng due to:
Error: [$injector:pget] Provider '$$sanitizeUri' must define $get factory method.
http://errors.angularjs.org/1.5.5/$injector/pget?p0=%24%24sanitizeUri
at provider (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4497)
at D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:366
at forEach (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:336)
at D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4484
at ngModule (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:2530)
at invoke (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4665)
at runInvokeQueue (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4558)
at D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4567
at forEach (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:322)
at loadModules (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4590)
at createInjector (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular/angular.js:4470)
at workFn (D:/Projects/l35workflow/src/portals/verybest/bower_components/angular-mocks/angular-mocks.js:2464)
http://errors.angularjs.org/1.5.5/$injector/modulerr?p0=ng&p1=Error%3A%20%5B%24injector%3Apget%5D%20Provider%20'%
我找不到任何答案。任何帮助将不胜感激。
我遇到了同样的问题,偶然发现了这个 github 问题,然后导致我遇到了链接的 github 问题。我不知道您是否使用 karma 作为您的测试运行程序,将幻影作为您的无头 Web 浏览器,但将我的karma-phantomjs-launcher
更新为 ^1.0.0
最终解决了我的问题。
问题的原因(对于那些不想通过我上面提到的链接的人)是 Angular 没有正式支持 PhantomJS,反过来,旧版本的karma-phantomjs-launcher
使用的是较旧的 Web 引擎,该引擎处理 new/bind 的方式与 Angular 不同。