feat(core): allow to provide multiple default testing modules (#15054)

This can be used to e.g. add the NoopAnimationsModule by default:

```
TestBed.initTestEnvironment([
  BrowserDynamicTestingModule,
  NoopAnimationsModule
], platformBrowserDynamicTesting());
```
This commit is contained in:
Tobias Bosch 2017-03-10 16:55:32 -08:00 committed by Chuck Jazdzewski
parent 8b5c6b2732
commit 6c8638cf01
3 changed files with 14 additions and 10 deletions

View File

@ -69,7 +69,7 @@ export class TestBed implements Injector {
*
* @experimental
*/
static initTestEnvironment(ngModule: Type<any>, platform: PlatformRef): TestBed {
static initTestEnvironment(ngModule: Type<any>|Type<any>[], platform: PlatformRef): TestBed {
const testBed = getTestBed();
testBed.initTestEnvironment(ngModule, platform);
return testBed;
@ -179,7 +179,7 @@ export class TestBed implements Injector {
*
* @experimental
*/
initTestEnvironment(ngModule: Type<any>, platform: PlatformRef) {
initTestEnvironment(ngModule: Type<any>|Type<any>[], platform: PlatformRef) {
if (this.platform || this.ngModule) {
throw new Error('Cannot set base providers because it has already been called');
}
@ -219,7 +219,7 @@ export class TestBed implements Injector {
platform: PlatformRef = null;
ngModule: Type<any> = null;
ngModule: Type<any>|Type<any>[] = null;
configureCompiler(config: {providers?: any[], useJit?: boolean}) {
this._assertNotInstantiated('TestBed.configureCompiler', 'configure the compiler');

View File

@ -66,11 +66,15 @@ System.config({
// method and kick off Karma (Jasmine).
System.import('@angular/core/testing')
.then(function(coreTesting) {
return System.import('@angular/platform-browser-dynamic/testing')
.then(function(browserTesting) {
return Promise
.all([
System.import('@angular/platform-browser-dynamic/testing'),
System.import('@angular/platform-browser/animations')
])
.then(function(mods) {
coreTesting.TestBed.initTestEnvironment(
browserTesting.BrowserDynamicTestingModule,
browserTesting.platformBrowserDynamicTesting());
[mods[0].BrowserDynamicTestingModule, mods[1].NoopAnimationsModule],
mods[0].platformBrowserDynamicTesting());
});
})
.then(function() {

View File

@ -58,7 +58,7 @@ export declare function resetFakeAsyncZone(): void;
/** @stable */
export declare class TestBed implements Injector {
ngModule: Type<any>;
ngModule: Type<any> | Type<any>[];
platform: PlatformRef;
compileComponents(): Promise<any>;
configureCompiler(config: {
@ -69,7 +69,7 @@ export declare class TestBed implements Injector {
createComponent<T>(component: Type<T>): ComponentFixture<T>;
execute(tokens: any[], fn: Function, context?: any): any;
get(token: any, notFoundValue?: any): any;
/** @experimental */ initTestEnvironment(ngModule: Type<any>, platform: PlatformRef): void;
/** @experimental */ initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef): void;
overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void;
overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void;
overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void;
@ -84,7 +84,7 @@ export declare class TestBed implements Injector {
static configureTestingModule(moduleDef: TestModuleMetadata): typeof TestBed;
static createComponent<T>(component: Type<T>): ComponentFixture<T>;
static get(token: any, notFoundValue?: any): any;
/** @experimental */ static initTestEnvironment(ngModule: Type<any>, platform: PlatformRef): TestBed;
/** @experimental */ static initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef): TestBed;
static overrideComponent(component: Type<any>, override: MetadataOverride<Component>): typeof TestBed;
static overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): typeof TestBed;
static overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): typeof TestBed;