refactor(testing): remove wrapping of Jasmine functions (#9564)
Instead, the async function now determines whether it should return a promise
or instead call a done function parameter. Importing Jasmine functions
from `@angular/core/testing` is no longer necessary and is now deprecated.
Additionally, beforeEachProviders is also deprecated, as it is specific
to the testing framework. Instead, use the new addProviders method directly.
Before:
```js
import {beforeEachProviders, it, describe, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEachProviders(() => [MyService]);
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
After:
```js
import {addProviders, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEach(() => {
addProviders([MyService]);
});
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
2016-06-24 20:48:35 -04:00
|
|
|
export declare function async(fn: Function): (done: any) => any;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
2016-06-24 15:41:49 -04:00
|
|
|
export declare class ComponentFixture<T> {
|
|
|
|
changeDetectorRef: ChangeDetectorRef;
|
feat(browser): use AppModules for bootstrap in the browser
This introduces the `BrowserModule` to be used for long form
bootstrap and offline compile bootstrap:
```
@AppModule({
modules: [BrowserModule],
precompile: [MainComponent],
providers: […], // additional providers
directives: […], // additional platform directives
pipes: […] // additional platform pipes
})
class MyModule {
constructor(appRef: ApplicationRef) {
appRef.bootstrap(MainComponent);
}
}
// offline compile
import {bootstrapModuleFactory} from ‘@angular/platform-browser’;
bootstrapModuleFactory(MyModuleNgFactory);
// runtime compile long form
import {bootstrapModule} from ‘@angular/platform-browser-dynamic’;
bootstrapModule(MyModule);
```
The short form, `bootstrap(...)`, can now creates a module on the fly,
given `directives`, `pipes, `providers`, `precompile` and `modules`
properties.
Related changes:
- make `SanitizationService`, `SecurityContext` public in `@angular/core` so that the offline compiler can resolve the token
- move `AnimationDriver` to `platform-browser` and make it
public so that the offline compiler can resolve the token
BREAKING CHANGES:
- short form bootstrap does no longer allow
to inject compiler internals (i.e. everything
from `@angular/compiler). Inject `Compiler` instead.
To provide custom providers for the compiler,
create a custom compiler via `browserCompiler({providers: [...]})`
and pass that into the `bootstrap` method.
2016-06-30 16:07:17 -04:00
|
|
|
componentInstance: T;
|
2016-06-24 15:41:49 -04:00
|
|
|
componentRef: ComponentRef<T>;
|
|
|
|
debugElement: DebugElement;
|
|
|
|
elementRef: ElementRef;
|
|
|
|
nativeElement: any;
|
2017-03-29 12:34:45 -04:00
|
|
|
ngZone: NgZone | null;
|
|
|
|
constructor(componentRef: ComponentRef<T>, ngZone: NgZone | null, _autoDetect: boolean);
|
2016-06-24 15:41:49 -04:00
|
|
|
autoDetectChanges(autoDetect?: boolean): void;
|
|
|
|
checkNoChanges(): void;
|
|
|
|
destroy(): void;
|
|
|
|
detectChanges(checkNoChanges?: boolean): void;
|
|
|
|
isStable(): boolean;
|
2017-05-12 16:49:16 -04:00
|
|
|
whenRenderingDone(): Promise<any>;
|
2016-06-24 15:41:49 -04:00
|
|
|
whenStable(): Promise<any>;
|
|
|
|
}
|
|
|
|
|
2017-01-03 19:54:46 -05:00
|
|
|
export declare const ComponentFixtureAutoDetect: InjectionToken<boolean[]>;
|
2016-06-24 20:35:01 -04:00
|
|
|
|
2017-01-03 19:54:46 -05:00
|
|
|
export declare const ComponentFixtureNoNgZone: InjectionToken<boolean[]>;
|
2016-06-24 20:35:01 -04:00
|
|
|
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare function discardPeriodicTasks(): void;
|
|
|
|
|
refactor(testing): remove wrapping of Jasmine functions (#9564)
Instead, the async function now determines whether it should return a promise
or instead call a done function parameter. Importing Jasmine functions
from `@angular/core/testing` is no longer necessary and is now deprecated.
Additionally, beforeEachProviders is also deprecated, as it is specific
to the testing framework. Instead, use the new addProviders method directly.
Before:
```js
import {beforeEachProviders, it, describe, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEachProviders(() => [MyService]);
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
After:
```js
import {addProviders, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEach(() => {
addProviders([MyService]);
});
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
2016-06-24 20:48:35 -04:00
|
|
|
export declare function fakeAsync(fn: Function): (...args: any[]) => any;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
2017-05-22 14:19:21 -04:00
|
|
|
export declare function flush(maxTurns?: number): number;
|
|
|
|
|
2016-06-22 17:56:10 -04:00
|
|
|
export declare function flushMicrotasks(): void;
|
|
|
|
|
2018-08-14 19:27:04 -04:00
|
|
|
export declare const getTestBed: () => TestBed;
|
2016-07-20 13:51:21 -04:00
|
|
|
|
refactor(testing): remove wrapping of Jasmine functions (#9564)
Instead, the async function now determines whether it should return a promise
or instead call a done function parameter. Importing Jasmine functions
from `@angular/core/testing` is no longer necessary and is now deprecated.
Additionally, beforeEachProviders is also deprecated, as it is specific
to the testing framework. Instead, use the new addProviders method directly.
Before:
```js
import {beforeEachProviders, it, describe, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEachProviders(() => [MyService]);
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
After:
```js
import {addProviders, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEach(() => {
addProviders([MyService]);
});
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
2016-06-24 20:48:35 -04:00
|
|
|
export declare function inject(tokens: any[], fn: Function): () => any;
|
2016-06-22 17:56:10 -04:00
|
|
|
|
|
|
|
export declare class InjectSetupWrapper {
|
2016-07-29 07:19:02 -04:00
|
|
|
constructor(_moduleDef: () => TestModuleMetadata);
|
refactor(testing): remove wrapping of Jasmine functions (#9564)
Instead, the async function now determines whether it should return a promise
or instead call a done function parameter. Importing Jasmine functions
from `@angular/core/testing` is no longer necessary and is now deprecated.
Additionally, beforeEachProviders is also deprecated, as it is specific
to the testing framework. Instead, use the new addProviders method directly.
Before:
```js
import {beforeEachProviders, it, describe, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEachProviders(() => [MyService]);
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
After:
```js
import {addProviders, inject} from 'angular2/testing/core';
describe('my code', () => {
beforeEach(() => {
addProviders([MyService]);
});
it('does stuff', inject([MyService], (service) => {
// actual test
});
});
```
2016-06-24 20:48:35 -04:00
|
|
|
inject(tokens: any[], fn: Function): () => any;
|
2016-06-22 17:56:10 -04:00
|
|
|
}
|
|
|
|
|
2016-07-29 07:19:02 -04:00
|
|
|
export declare type MetadataOverride<T> = {
|
2018-05-24 09:49:07 -04:00
|
|
|
add?: Partial<T>;
|
|
|
|
remove?: Partial<T>;
|
|
|
|
set?: Partial<T>;
|
2016-07-29 07:19:02 -04:00
|
|
|
};
|
|
|
|
|
2016-08-02 10:54:14 -04:00
|
|
|
export declare function resetFakeAsyncZone(): void;
|
|
|
|
|
2020-02-26 12:09:35 -05:00
|
|
|
export declare interface TestBed {
|
2018-11-26 17:44:45 -05:00
|
|
|
ngModule: Type<any> | Type<any>[];
|
|
|
|
platform: PlatformRef;
|
|
|
|
compileComponents(): Promise<any>;
|
|
|
|
configureCompiler(config: {
|
|
|
|
providers?: any[];
|
|
|
|
useJit?: boolean;
|
|
|
|
}): void;
|
|
|
|
configureTestingModule(moduleDef: TestModuleMetadata): void;
|
|
|
|
createComponent<T>(component: Type<T>): ComponentFixture<T>;
|
|
|
|
execute(tokens: any[], fn: Function, context?: any): any;
|
2019-08-29 16:54:49 -04:00
|
|
|
/** @deprecated */ get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): any;
|
2020-01-24 13:55:39 -05:00
|
|
|
/** @deprecated */ get(token: any, notFoundValue?: any): any;
|
2018-11-26 17:44:45 -05:00
|
|
|
initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef, aotSummaries?: () => any[]): void;
|
2019-08-19 18:05:29 -04:00
|
|
|
inject<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue?: T, flags?: InjectFlags): T;
|
|
|
|
inject<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue: null, flags?: InjectFlags): T | null;
|
2018-11-26 17:44:45 -05:00
|
|
|
overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void;
|
|
|
|
overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void;
|
|
|
|
overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void;
|
|
|
|
overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): void;
|
|
|
|
overrideProvider(token: any, provider: {
|
2019-05-20 19:08:16 -04:00
|
|
|
useFactory: Function;
|
|
|
|
deps: any[];
|
2018-11-26 17:44:45 -05:00
|
|
|
}): void;
|
|
|
|
overrideProvider(token: any, provider: {
|
2019-04-03 13:23:46 -04:00
|
|
|
useValue: any;
|
2018-11-26 17:44:45 -05:00
|
|
|
}): void;
|
|
|
|
overrideProvider(token: any, provider: {
|
2019-05-20 19:08:16 -04:00
|
|
|
useFactory?: Function;
|
|
|
|
useValue?: any;
|
|
|
|
deps?: any[];
|
2018-11-26 17:44:45 -05:00
|
|
|
}): void;
|
|
|
|
overrideTemplateUsingTestingModule(component: Type<any>, template: string): void;
|
|
|
|
resetTestEnvironment(): void;
|
|
|
|
resetTestingModule(): void;
|
|
|
|
}
|
|
|
|
|
2018-08-14 19:27:04 -04:00
|
|
|
export declare const TestBed: TestBedStatic;
|
2018-08-06 17:09:38 -04:00
|
|
|
|
2020-02-26 12:09:35 -05:00
|
|
|
export declare interface TestBedStatic {
|
2018-08-14 19:27:04 -04:00
|
|
|
new (...args: any[]): TestBed;
|
2018-08-06 17:09:38 -04:00
|
|
|
compileComponents(): Promise<any>;
|
|
|
|
configureCompiler(config: {
|
|
|
|
providers?: any[];
|
|
|
|
useJit?: boolean;
|
2018-08-14 19:27:04 -04:00
|
|
|
}): TestBedStatic;
|
|
|
|
configureTestingModule(moduleDef: TestModuleMetadata): TestBedStatic;
|
|
|
|
createComponent<T>(component: Type<T>): ComponentFixture<T>;
|
2019-08-29 16:54:49 -04:00
|
|
|
/** @deprecated */ get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags): any;
|
2020-01-24 13:55:39 -05:00
|
|
|
/** @deprecated */ get(token: any, notFoundValue?: any): any;
|
2018-08-14 19:27:04 -04:00
|
|
|
initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef, aotSummaries?: () => any[]): TestBed;
|
2019-08-19 18:05:29 -04:00
|
|
|
inject<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue?: T, flags?: InjectFlags): T;
|
2020-01-24 13:55:39 -05:00
|
|
|
inject<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue: null, flags?: InjectFlags): T | null;
|
2018-08-14 19:27:04 -04:00
|
|
|
overrideComponent(component: Type<any>, override: MetadataOverride<Component>): TestBedStatic;
|
|
|
|
overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): TestBedStatic;
|
|
|
|
overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): TestBedStatic;
|
|
|
|
overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): TestBedStatic;
|
2020-01-24 13:55:39 -05:00
|
|
|
overrideProvider(token: any, provider: {
|
|
|
|
useFactory: Function;
|
|
|
|
deps: any[];
|
|
|
|
}): TestBedStatic;
|
2018-08-14 19:27:04 -04:00
|
|
|
overrideProvider(token: any, provider: {
|
|
|
|
useValue: any;
|
|
|
|
}): TestBedStatic;
|
2018-08-06 17:09:38 -04:00
|
|
|
overrideProvider(token: any, provider: {
|
|
|
|
useFactory?: Function;
|
|
|
|
useValue?: any;
|
|
|
|
deps?: any[];
|
2018-08-14 19:27:04 -04:00
|
|
|
}): TestBedStatic;
|
|
|
|
overrideTemplate(component: Type<any>, template: string): TestBedStatic;
|
|
|
|
overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBedStatic;
|
2018-10-19 11:27:04 -04:00
|
|
|
resetTestEnvironment(): void;
|
2018-08-14 19:27:04 -04:00
|
|
|
resetTestingModule(): TestBedStatic;
|
2016-07-20 13:51:21 -04:00
|
|
|
}
|
|
|
|
|
2016-06-24 20:35:01 -04:00
|
|
|
export declare class TestComponentRenderer {
|
|
|
|
insertRootElement(rootElementId: string): void;
|
|
|
|
}
|
|
|
|
|
2016-07-29 07:19:02 -04:00
|
|
|
export declare type TestModuleMetadata = {
|
feat(testing): add implicit test module
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
2016-07-04 12:37:30 -04:00
|
|
|
providers?: any[];
|
2016-07-18 06:50:31 -04:00
|
|
|
declarations?: any[];
|
|
|
|
imports?: any[];
|
2016-07-25 08:47:16 -04:00
|
|
|
schemas?: Array<SchemaMetadata | any[]>;
|
2017-10-27 20:04:11 -04:00
|
|
|
aotSummaries?: () => any[];
|
2016-07-29 07:19:02 -04:00
|
|
|
};
|
|
|
|
|
2019-12-02 10:56:56 -05:00
|
|
|
export declare function tick(millis?: number, tickOptions?: {
|
|
|
|
processNewMacroTasksSynchronously: boolean;
|
|
|
|
}): void;
|
feat(testing): add implicit test module
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
2016-07-04 12:37:30 -04:00
|
|
|
|
2016-07-29 07:19:02 -04:00
|
|
|
export declare function withModule(moduleDef: TestModuleMetadata): InjectSetupWrapper;
|
2018-03-09 09:45:11 -05:00
|
|
|
export declare function withModule(moduleDef: TestModuleMetadata, fn: Function): () => any;
|