• Overview
@angular/upgrade/static/testing

createAngularTestingModule

function

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.

Here is the example application and its unit tests that use createAngularTestingModule and createAngularJSTestingModule.

@paramangularJSModulesstring[]

a collection of the names of AngularJS modules to include in the configuration.

@paramstrictDiboolean | undefined

whether the AngularJS injector should have strictDI enabled.

@returnsType<any>
Jump to details