我们的应用程序目前有大约4,500多个现有的Angular 1测试.我们现在正在使用Angular 2 UpgradeModule
来降级Angular 2服务,该服务是从我们的应用程序的run()方法中使用的.这会导致所有测试失败并出现Error: [$injector:unpr] Unknown Provider $$angularInjectorProvider
错误.
我创建了一个plnkr来演示这个问题(http://plnkr.co/edit/XuMYBr9xInqq18Kr6EAs?p=preview).
基本上Angular 1模块看起来像这样:
// angular1.module.ts
angular.module( 'testApp' )
.run( [ 'Angular2Service', Angular2Service => { // injecting downgraded service
Angular2Service.showTestMessage();
} ] );
Run Code Online (Sandbox Code Playgroud)
Angular2Service
降级在哪里:
// app.module.ts
angular.module( 'testApp' )
.factory( 'Angular2Service', downgradeInjectable( Angular2Service ) );
@NgModule({
imports: [ BrowserModule, UpgradeModule ],
providers : [ Angular2Service ]
})
export class AppModule {
ngDoBootstrap() {}
}
Run Code Online (Sandbox Code Playgroud)
最初到目前为止,我'Angular2Service'
在测试执行时遇到了一个Unknown Provider错误,所以我添加了一个beforeEach()
编译所有内容AppModule
:
beforeEach( async( () => …
Run Code Online (Sandbox Code Playgroud) angularjs ×1