fix(ivy): TestBed.get should be able to retrieve tokens from Compiler's injector (#28196)

This changes restores parity between VE TestBed and R3TestBed logic related to retrieving tokens using TestBed.get function. Now R3TestBed also tries to retrieve tokens from Compiler Injector.

PR Close #28196
This commit is contained in:
Andrew Kushnir 2019-01-16 17:13:23 -08:00 committed by Alex Rickabaugh
parent 583061d043
commit 030350f53e
2 changed files with 11 additions and 8 deletions

View File

@ -65,6 +65,8 @@ let _nextRootElementId = 0;
const EMPTY_ARRAY: Type<any>[] = []; const EMPTY_ARRAY: Type<any>[] = [];
const UNDEFINED: Symbol = Symbol('UNDEFINED');
// Resolvers for Angular decorators // Resolvers for Angular decorators
type Resolvers = { type Resolvers = {
module: Resolver<NgModule>, module: Resolver<NgModule>,
@ -311,6 +313,7 @@ export class TestBedRender3 implements Injector, TestBed {
// reset test module config // reset test module config
this._providers = []; this._providers = [];
this._compilerOptions = []; this._compilerOptions = [];
this._compilerProviders = [];
this._declarations = []; this._declarations = [];
this._imports = []; this._imports = [];
this._schemas = []; this._schemas = [];
@ -405,7 +408,8 @@ export class TestBedRender3 implements Injector, TestBed {
if (token === TestBedRender3) { if (token === TestBedRender3) {
return this; return this;
} }
return this._moduleRef.injector.get(token, notFoundValue); const result = this._moduleRef.injector.get(token, UNDEFINED);
return result === UNDEFINED ? this.compilerInjector.get(token, notFoundValue) : result;
} }
execute(tokens: any[], fn: Function, context?: any): any { execute(tokens: any[], fn: Function, context?: any): any {
@ -590,8 +594,8 @@ export class TestBedRender3 implements Injector, TestBed {
} }
get compilerInjector(): Injector { get compilerInjector(): Injector {
if (this._compilerInjector !== undefined) { if (this._compilerInjector !== null) {
this._compilerInjector; return this._compilerInjector;
} }
const providers: StaticProvider[] = []; const providers: StaticProvider[] = [];

View File

@ -63,11 +63,10 @@ if (isBrowser) {
{providers: [{provide: FancyService, useValue: new FancyService()}]}); {providers: [{provide: FancyService, useValue: new FancyService()}]});
}); });
fixmeIvy('FW-919: TestBed.get should be able to retrieve tokens from Compiler\'s injector') it('provides a real ResourceLoader instance',
.it('provides a real ResourceLoader instance', inject([ResourceLoader], (resourceLoader: ResourceLoader) => {
inject([ResourceLoader], (resourceLoader: ResourceLoader) => { expect(resourceLoader instanceof ResourceLoaderImpl).toBeTruthy();
expect(resourceLoader instanceof ResourceLoaderImpl).toBeTruthy(); }));
}));
it('should allow the use of fakeAsync', it('should allow the use of fakeAsync',
fakeAsync(inject([FancyService], (service: any /** TODO #9100 */) => { fakeAsync(inject([FancyService], (service: any /** TODO #9100 */) => {