Разница между getTestBed и TestBed - PullRequest
2 голосов
/ 08 октября 2019

Допустим, у меня есть тестовая конфигурация, как показано ниже

 TestBed.configureTestingModule({
            imports: [HttpClientTestingModule],
            providers: [SomeService]
        });

        injector = getTestBed()

Если я хочу получить услугу инъекции, в чем разница между

TestBed.get(SomeService)
injector.get(SomeService)

1 Ответ

2 голосов
/ 08 октября 2019

Это интересно. Я думаю, что это разница между getTestBed и TestBed:

TestBed настраивает и инициализирует среду для модульного тестирования и предоставляет методы для создания компонентов и службв юнит-тестах. И getTestBed возвращает синглтон применимого TestBed.

Более глубоко

TestBed является первичным API для написания модульных тестов для приложений и библиотек Angular.

interface TestBed {
  platform: PlatformRef
  ngModule: Type<any> | Type<any>[]
  initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef, aotSummaries?: () => any[]): void
  resetTestEnvironment(): void
  resetTestingModule(): void
  configureCompiler(config: { providers?: any[]; useJit?: boolean; }): void
  configureTestingModule(moduleDef: TestModuleMetadata): void
  compileComponents(): Promise<any>
  get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): any
  execute(tokens: any[], fn: Function, context?: any): any
  overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void
  overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void
  overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void
  overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): void
  overrideProvider(token: any, provider: { useFactory: Function; deps: any[]; }): void
  overrideTemplateUsingTestingModule(component: Type<any>, template: string): void
  createComponent<T>(component: Type<T>): ComponentFixture<T>
}

, а затем getTestBed является экземпляром TestBedViewEngine или TestBedRender3 .

const getTestBed: () => TestBed;
...