createAngularTestingModule
A helper function to use when unit testing Angular services that depend upon upgraded AngularJS services.
function createAngularTestingModule( angularJSModules: string[], strictDi?: boolean | undefined): Type<any>;
createAngularTestingModule
Type<any>
A helper function to use when unit testing Angular services that depend upon upgraded AngularJS services.
This function returns an NgModule
decorated class that is configured to wire up the Angular
and AngularJS injectors without the need to actually bootstrap a hybrid application.
This makes it simpler and faster to unit test services.
Use the returned class as an "import" when configuring the TestBed
.
In the following code snippet, we are configuring the TestBed with two imports.
The Ng2AppModule
is the Angular part of our hybrid application and the ng1AppModule
is the
AngularJS part.
{@example upgrade/static/ts/full/module.spec.ts region='angular-setup'}
Once this is done we can get hold of services via the Angular Injector
as normal.
Services that are (or have dependencies on) an upgraded AngularJS service, will be instantiated
as needed by the AngularJS $injector
.
In the following code snippet, HeroesService
is an Angular service that depends upon an
AngularJS service, titleCase
.
{@example upgrade/static/ts/full/module.spec.ts region='angular-spec'}
This helper is for testing services not Components.
For Component testing you must still bootstrap a hybrid app. See UpgradeModule
or
downgradeModule
for more information.
The resulting configuration does not wire up AngularJS digests to Zone hooks. It is the
responsibility of the test writer to call $rootScope.$apply
, as necessary, to trigger
AngularJS handlers of async events from Angular.
The helper sets up global variables to hold the shared Angular and AngularJS injectors.
- Only call this helper once per spec.
- Do not use
createAngularTestingModule
in the same spec ascreateAngularJSTestingModule
.
Here is the example application and its unit tests that use createAngularTestingModule
and createAngularJSTestingModule
.
string[]
a collection of the names of AngularJS modules to include in the configuration.
boolean | undefined
whether the AngularJS injector should have strictDI
enabled.
Type<any>