From cc2593b5647992c900cbf9cd2ac5d5dab3674674 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Fri, 9 Dec 2022 12:00:32 -0800 Subject: [PATCH] fix(common): Fix TestBed.overrideProvider type to include multi TestBed.overrideProvider should include `multi` support in its type. The underlying implementation already supports it, as documented by the tests which are currently casting the override to `any` to get around the bad type. --- goldens/public-api/core/testing/index.md | 3 +++ packages/core/test/test_bed_spec.ts | 6 +++--- packages/core/testing/src/test_bed.ts | 11 +++++------ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/goldens/public-api/core/testing/index.md b/goldens/public-api/core/testing/index.md index b7c88a1d6ea3b..26865e4674495 100644 --- a/goldens/public-api/core/testing/index.md +++ b/goldens/public-api/core/testing/index.md @@ -140,16 +140,19 @@ export interface TestBed { overrideProvider(token: any, provider: { useFactory: Function; deps: any[]; + multi?: boolean; }): TestBed; // (undocumented) overrideProvider(token: any, provider: { useValue: any; + multi?: boolean; }): TestBed; // (undocumented) overrideProvider(token: any, provider: { useFactory?: Function; useValue?: any; deps?: any[]; + multi?: boolean; }): TestBed; // (undocumented) overrideTemplate(component: Type, template: string): TestBed; diff --git a/packages/core/test/test_bed_spec.ts b/packages/core/test/test_bed_spec.ts index 0f5118290e992..0fe11f8c73956 100644 --- a/packages/core/test/test_bed_spec.ts +++ b/packages/core/test/test_bed_spec.ts @@ -1020,7 +1020,7 @@ describe('TestBed', () => { it('overridden with an array', () => { const overrideValue = ['override']; - TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true} as any); + TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true}); const value = TestBed.inject(multiToken); expect(value.length).toEqual(overrideValue.length); @@ -1031,7 +1031,7 @@ describe('TestBed', () => { // This is actually invalid because multi providers return arrays. We have this here so we can // ensure Ivy behaves the same as VE does currently. const overrideValue = 'override'; - TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true} as any); + TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true}); const value = TestBed.inject(multiToken); expect(value.length).toEqual(overrideValue.length); @@ -1248,7 +1248,7 @@ describe('TestBed', () => { }); const multiOverride = {useValue: [{value: 'new provider'}], multi: true}; - TestBed.overrideProvider(MY_TOKEN, multiOverride as any); + TestBed.overrideProvider(MY_TOKEN, multiOverride); const fixture = TestBed.createComponent(MyComp); expect(fixture.componentInstance.myProviders).toEqual([{value: 'new provider'}]); diff --git a/packages/core/testing/src/test_bed.ts b/packages/core/testing/src/test_bed.ts index 50d0ea80e6dd7..7f425fc15bfce 100644 --- a/packages/core/testing/src/test_bed.ts +++ b/packages/core/testing/src/test_bed.ts @@ -127,13 +127,12 @@ export interface TestBed { /** * Overwrites all providers for the given token with the given provider definition. */ - overrideProvider(token: any, provider: { - useFactory: Function, - deps: any[], - }): TestBed; - overrideProvider(token: any, provider: {useValue: any;}): TestBed; - overrideProvider(token: any, provider: {useFactory?: Function, useValue?: any, deps?: any[]}): + overrideProvider(token: any, provider: {useFactory: Function, deps: any[], multi?: boolean}): TestBed; + overrideProvider(token: any, provider: {useValue: any, multi?: boolean}): TestBed; + overrideProvider( + token: any, + provider: {useFactory?: Function, useValue?: any, deps?: any[], multi?: boolean}): TestBed; overrideTemplateUsingTestingModule(component: Type, template: string): TestBed;