Skip to content

Commit f30d18a

Browse files
atscottthePunderWoman
authored andcommitted
fix(common): Fix TestBed.overrideProvider type to include multi (#48424)
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. PR Close #48424
1 parent ffb2c9c commit f30d18a

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

goldens/public-api/core/testing/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,16 +140,19 @@ export interface TestBed {
140140
overrideProvider(token: any, provider: {
141141
useFactory: Function;
142142
deps: any[];
143+
multi?: boolean;
143144
}): TestBed;
144145
// (undocumented)
145146
overrideProvider(token: any, provider: {
146147
useValue: any;
148+
multi?: boolean;
147149
}): TestBed;
148150
// (undocumented)
149151
overrideProvider(token: any, provider: {
150152
useFactory?: Function;
151153
useValue?: any;
152154
deps?: any[];
155+
multi?: boolean;
153156
}): TestBed;
154157
// (undocumented)
155158
overrideTemplate(component: Type<any>, template: string): TestBed;

packages/core/test/test_bed_spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,7 +1020,7 @@ describe('TestBed', () => {
10201020

10211021
it('overridden with an array', () => {
10221022
const overrideValue = ['override'];
1023-
TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true} as any);
1023+
TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true});
10241024

10251025
const value = TestBed.inject(multiToken);
10261026
expect(value.length).toEqual(overrideValue.length);
@@ -1031,7 +1031,7 @@ describe('TestBed', () => {
10311031
// This is actually invalid because multi providers return arrays. We have this here so we can
10321032
// ensure Ivy behaves the same as VE does currently.
10331033
const overrideValue = 'override';
1034-
TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true} as any);
1034+
TestBed.overrideProvider(multiToken, {useValue: overrideValue, multi: true});
10351035

10361036
const value = TestBed.inject(multiToken);
10371037
expect(value.length).toEqual(overrideValue.length);
@@ -1248,7 +1248,7 @@ describe('TestBed', () => {
12481248
});
12491249

12501250
const multiOverride = {useValue: [{value: 'new provider'}], multi: true};
1251-
TestBed.overrideProvider(MY_TOKEN, multiOverride as any);
1251+
TestBed.overrideProvider(MY_TOKEN, multiOverride);
12521252

12531253
const fixture = TestBed.createComponent(MyComp);
12541254
expect(fixture.componentInstance.myProviders).toEqual([{value: 'new provider'}]);

packages/core/testing/src/test_bed.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,12 @@ export interface TestBed {
119119
/**
120120
* Overwrites all providers for the given token with the given provider definition.
121121
*/
122-
overrideProvider(token: any, provider: {
123-
useFactory: Function,
124-
deps: any[],
125-
}): TestBed;
126-
overrideProvider(token: any, provider: {useValue: any;}): TestBed;
127-
overrideProvider(token: any, provider: {useFactory?: Function, useValue?: any, deps?: any[]}):
122+
overrideProvider(token: any, provider: {useFactory: Function, deps: any[], multi?: boolean}):
128123
TestBed;
124+
overrideProvider(token: any, provider: {useValue: any, multi?: boolean}): TestBed;
125+
overrideProvider(
126+
token: any,
127+
provider: {useFactory?: Function, useValue?: any, deps?: any[], multi?: boolean}): TestBed;
129128

130129
overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBed;
131130

0 commit comments

Comments
 (0)