小编Gre*_*obs的帖子

当使用"UpgradeModule"降级服务进行单元测试时,Angular 2:"Unknown Provider:$$ angularInjectorProvider"

我们的应用程序目前有大约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

12
推荐指数
1
解决办法
3382
查看次数

标签 统计

angularjs ×1