Every test now has an implicit module. It can be configured via `configureModule` (from @angular/core/testing) to add providers, directives, pipes, ... The compiler now has to be configured separately via `configureCompiler` (from @angular/core/testing) to add providers or define whether to use jit. BREAKING CHANGE: - Application providers can no longer inject compiler internals (i.e. everything from `@angular/compiler). Inject `Compiler` instead. This reflects the changes to `bootstrap` for module support (3f55aa609f60f130f1d69188ed057214b1267cb3). - Compiler providers can no longer be added via `addProviders` / `withProviders`. Use the new method `configureCompiler` instead. - Platform directives / pipes need to be provided via `configureModule` and can no longer be provided via the `PLATFORM_PIPES` / `PLATFORM_DIRECTIVES` tokens. - `setBaseTestProviders()` was renamed into `initTestEnvironment` and now takes a `PlatformRef` and a factory for a `Compiler`. - E.g. for the browser platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS} from ‘@angular/platform-browser-dynamic/testing’; setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); ``` AFTER: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {browserTestCompiler, browserDynamicTestPlatform, BrowserDynamicTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( browserTestCompiler, browserDynamicTestPlatform(), BrowserDynamicTestModule); ``` - E.g. for the server platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS} from ‘@angular/platform-server/testing/server’; setBaseTestProviders(TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS); ``` AFTER: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {serverTestCompiler, serverTestPlatform, ServerTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( serverTestCompiler, serverTestPlatform(), ServerTestModule); ``` Related to #9726 Closes #9846
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {CompilerConfig, DirectiveResolver, ViewResolver} from '@angular/compiler';
|
|
import {MockDirectiveResolver, MockViewResolver, OverridingTestComponentBuilder} from '@angular/compiler/testing';
|
|
import {AppModule, Compiler, Provider, ReflectiveInjector, Type} from '@angular/core';
|
|
import {TestComponentBuilder, TestComponentRenderer} from '@angular/core/testing';
|
|
import {BrowserTestModule, browserTestPlatform} from '@angular/platform-browser/testing';
|
|
|
|
import {BROWSER_APP_COMPILER_PROVIDERS} from './index';
|
|
import {DOMTestComponentRenderer} from './testing/dom_test_component_renderer';
|
|
|
|
export * from './private_export_testing'
|
|
|
|
const TEST_BROWSER_DYNAMIC_COMPILER_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
|
BROWSER_APP_COMPILER_PROVIDERS,
|
|
[
|
|
{ provide: DirectiveResolver,
|
|
useClass: MockDirectiveResolver },
|
|
{ provide: ViewResolver,
|
|
useClass: MockViewResolver }
|
|
]
|
|
];
|
|
|
|
/**
|
|
* Creates a compiler for testing
|
|
*
|
|
* @stable
|
|
*/
|
|
export function browserTestCompiler(
|
|
{providers = [], useJit = true}: {providers?: Array<Type|Provider|any[]>,
|
|
useJit?: boolean} = {}): Compiler {
|
|
const injector = ReflectiveInjector.resolveAndCreate([
|
|
TEST_BROWSER_DYNAMIC_COMPILER_PROVIDERS,
|
|
{provide: CompilerConfig, useValue: new CompilerConfig({genDebugInfo: true, useJit: useJit})},
|
|
providers ? providers : []
|
|
]);
|
|
return injector.get(Compiler);
|
|
}
|
|
|
|
/**
|
|
* Platform for testing.
|
|
*
|
|
* @experimental API related to bootstrapping are still under review.
|
|
*/
|
|
export const browserDynamicTestPlatform = browserTestPlatform;
|
|
|
|
/**
|
|
* AppModule for testing.
|
|
*
|
|
* @stable
|
|
*/
|
|
@AppModule({
|
|
modules: [BrowserTestModule],
|
|
providers: [
|
|
{provide: TestComponentBuilder, useClass: OverridingTestComponentBuilder},
|
|
{provide: TestComponentRenderer, useClass: DOMTestComponentRenderer},
|
|
]
|
|
})
|
|
export class BrowserDynamicTestModule {
|
|
} |