diff --git a/packages/core/test/test_bed_spec.ts b/packages/core/test/test_bed_spec.ts index 7428945cedc91..76d4d5f8876c1 100644 --- a/packages/core/test/test_bed_spec.ts +++ b/packages/core/test/test_bed_spec.ts @@ -273,7 +273,6 @@ describe('TestBed', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [MyModule, MyModule2], - providers: [{provide: multiToken, useValue: ['override'], multi: true}] }); }); @@ -311,7 +310,7 @@ describe('TestBed', () => { static forRoot() { return { ngModule: MyMod, - providers: [[{provide: TOKEN, multi: true, useValue: 'forRootValue'}]] + providers: [{provide: TOKEN, multi: true, useValue: 'forRootValue'}] }; } } diff --git a/packages/core/testing/src/r3_test_bed_compiler.ts b/packages/core/testing/src/r3_test_bed_compiler.ts index 0b31a25ac4031..9e5db8597c55a 100644 --- a/packages/core/testing/src/r3_test_bed_compiler.ts +++ b/packages/core/testing/src/r3_test_bed_compiler.ts @@ -381,8 +381,15 @@ export class R3TestBedCompiler { // Apply provider overrides to imported modules recursively const moduleDef: any = (moduleType as any)[NG_MOD_DEF]; - for (const importType of moduleDef.imports) { - this.applyProviderOverridesToModule(importType); + for (const importedModule of moduleDef.imports) { + this.applyProviderOverridesToModule(importedModule); + } + // Also override the providers on any ModuleWithProviders imports since those don't appear in + // the moduleDef. + for (const importedModule of flatten(injectorDef.imports)) { + if (isModuleWithProviders(importedModule)) { + importedModule.providers = this.getOverriddenProviders(importedModule.providers); + } } } }