Fan*_*ung 5 unit-testing jasmine angular
假设我有一个如下所示的测试配置
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [SomeService]
});
injector = getTestBed()
Run Code Online (Sandbox Code Playgroud)
如果我想获得注入服务,两者之间有什么区别
TestBed.get(SomeService)
injector.get(SomeService)
Run Code Online (Sandbox Code Playgroud)
那很有意思。我认为这是 getTestBed 和 TestBed 之间的区别:
TestBed 配置和初始化 单元测试环境,并提供在单元测试中创建组件和服务的方法。getTestBed返回适用 TestBed 的单例。
更深入
TestBed是为 Angular 应用程序和库编写单元测试的主要 API 。
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>
}
Run Code Online (Sandbox Code Playgroud)
然后getTestBed是TestBedViewEngine或TestBedRender3的实例。
const getTestBed: () => TestBed;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |