javascript - 已弃用 : DI is instantiating a token "MockLocationStrategy" that inherits its @Injectable decorator but does not provide one itself

标签 javascript angular typescript karma-jasmine angular-test

在测试我的 Angular 应用程序时,我收到了弃用警告

'DEPRECATED: DI is instantiating a token "MockLocationStrategy" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the "MockLocationStrategy" class.'


以下是引发警告的示例测试

describe('BookComponent', () => {
  let component: BookComponent;
  let fixture: ComponentFixture<BookIssueComponent>;

  beforeEach(waitForAsync(() => {
    TestBed.configureTestingModule({
      imports: [
        RouterTestingModule,
      ],
      declarations: [BookComponent]
    })
      .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(BookComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

我相信这个警告是因为我更新了我的包
Package                                   Current     Wanted    Latest  Location                                          
@angular-devkit/architect               0.1102.11  0.1102.13  0.1200.1  node_modules/@angular-devkit/architect               
@angular-devkit/build-angular           0.1102.11  0.1102.13    12.0.1  node_modules/@angular-devkit/build-angular           
@angular-eslint/builder                     4.2.0      4.3.0    12.0.0  node_modules/@angular-eslint/builder                 
@angular-eslint/eslint-plugin               4.2.0      4.3.0    12.0.0  node_modules/@angular-eslint/eslint-plugin           
@angular-eslint/eslint-plugin-template      4.2.0      4.3.0    12.0.0  node_modules/@angular-eslint/eslint-plugin-template  
@angular-eslint/schematics                  4.2.0      4.3.0    12.0.0  node_modules/@angular-eslint/schematics              
@angular-eslint/template-parser             4.2.0      4.3.0    12.0.0  node_modules/@angular-eslint/template-parser         
@angular/animations                       11.2.12    11.2.14    12.0.1  node_modules/@angular/animations                     
@angular/cdk                              11.2.11    11.2.13    12.0.1  node_modules/@angular/cdk                            
@angular/cli                              11.2.11    11.2.13    12.0.1  node_modules/@angular/cli                            
@angular/common                           11.2.12    11.2.14    12.0.1  node_modules/@angular/common                         
@angular/compiler                         11.2.12    11.2.14    12.0.1  node_modules/@angular/compiler                       
@angular/compiler-cli                     11.2.12    11.2.14    12.0.1  node_modules/@angular/compiler-cli                   
@angular/core                             11.2.12    11.2.14    12.0.1  node_modules/@angular/core                           
@angular/forms                            11.2.12    11.2.14    12.0.1  node_modules/@angular/forms                          
@angular/language-service                 11.2.12    11.2.14    12.0.1  node_modules/@angular/language-service               
@angular/platform-browser                 11.2.12    11.2.14    12.0.1  node_modules/@angular/platform-browser               
@angular/platform-browser-dynamic         11.2.12    11.2.14    12.0.1  node_modules/@angular/platform-browser-dynamic       
@angular/pwa                            0.1102.11  0.1102.13    12.0.1  node_modules/@angular/pwa                            
@angular/router                           11.2.12    11.2.14    12.0.1  node_modules/@angular/router                         
@angular/service-worker                   11.2.12    11.2.14    12.0.1  node_modules/@angular/service-worker                 
@ngrx/component                            11.1.1     11.1.1    12.0.0  node_modules/@ngrx/component                         
@ngrx/effects                              11.1.1     11.1.1    12.0.0  node_modules/@ngrx/effects                           
@ngrx/entity                               11.1.1     11.1.1    12.0.0  node_modules/@ngrx/entity                            
@ngrx/schematics                           11.1.1     11.1.1    12.0.0  node_modules/@ngrx/schematics                        
@ngrx/store                                11.1.1     11.1.1    12.0.0  node_modules/@ngrx/store                             
@ngrx/store-devtools                       11.1.1     11.1.1    12.0.0  node_modules/@ngrx/store-devtools                    
@tinymce/tinymce-angular                    4.2.2      4.2.3     4.2.3  node_modules/@tinymce/tinymce-angular                
@types/jasmine                             3.6.10      3.7.4     3.7.4  node_modules/@types/jasmine                          
@types/jasminewd2                           2.0.8      2.0.9     2.0.9  node_modules/@types/jasminewd2                       
@types/node                                15.0.1     15.6.0    15.6.0  node_modules/@types/node                             
@typescript-eslint/eslint-plugin           4.22.0     4.22.0    4.24.0  node_modules/@typescript-eslint/eslint-plugin        
@typescript-eslint/parser                  4.22.0     4.22.0    4.24.0  node_modules/@typescript-eslint/parser               
bootstrap                                   4.6.0      4.6.0     5.0.1  node_modules/bootstrap                               
eslint                                     7.25.0     7.26.0    7.26.0  node_modules/eslint                                  
eslint-plugin-import                       2.22.1     2.22.1    2.23.2  node_modules/eslint-plugin-import                    
eslint-plugin-jsdoc                        33.0.0     33.0.0    34.8.2  node_modules/eslint-plugin-jsdoc                     
google-libphonenumber                      3.2.19     3.2.21    3.2.21  node_modules/google-libphonenumber                   
ng2-pdf-viewer                              6.4.1      6.4.1     7.0.1  node_modules/ng2-pdf-viewer                          
rxjs                                        6.6.7      6.6.7     7.1.0  node_modules/rxjs                                    
snyk                                      1.580.0    1.605.0   1.605.0  node_modules/snyk                                    
tinymce                                     5.7.1      5.8.1     5.8.1  node_modules/tinymce                                 
typescript                                  4.1.5      4.1.5     4.2.4  node_modules/typescript  
我已尝试关注 docs: RouterTestingModule should be added to Testing guide #34341 的讨论但我不知道如何解决这个问题
但是我如何提供我的 RouterTesting 模块来解决这个问题呢?

最佳答案

使用 withRoutes 提供路线没有为我删除警告。而是提供 MockLocationStrategy对于 LocationStrategy对于每个测试导入 RouterTestingModule为我工作。

import { MockLocationStrategy } from '@angular/common/testing';
import { RouterTestingModule } from '@angular/router/testing';
然后在 TestBed.configureTestingModule
{ provide: LocationStrategy, useClass: MockLocationStrategy },
我在这里找到了答案:https://github.com/angular/angular/issues/34341#issuecomment-864281500

关于javascript - 已弃用 : DI is instantiating a token "MockLocationStrategy" that inherits its @Injectable decorator but does not provide one itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67643040/

相关文章:

html - 如何在垫子设计中正确对齐我的 div

javascript - 是否可以将对象转换为 Flow 中的精确类型?

javascript - 如何在 JavaScript 中表示代数数据类型和模式匹配

javascript - 对 n 列平均使用剩余空间

javascript - onPress 未检测到 React Native 中可触摸不透明度的属性

javascript - 如何从网页中的 Google 表格单元格中读取数据?

Javascript正则表达式错误,两个字符之间的文本

html - 设置 html 文本区域的键盘类型

html - Angular 2+模板中值的三元运算符

typescript - 使用 TypeScript 的 Vue Prop 类型