Spec-Zone.ru › Angular

createAngularTestingModule

Вспомогательная функция для модульного тестирования сервисов Angular, зависящих от обновлённых сервисов AngularJS.

API

function createAngularTestingModule(
  angularJSModules: string[],
  strictDi?: boolean | undefined,
): Type<any>;
@paramangularJSModulesstring[]

коллекция имён модулей AngularJS, которые нужно включить в конфигурацию.

@paramstrictDiboolean | undefined

должен ли инжектор AngularJS работать в режиме strictDI.

@returnsType<any>

Описание

Вспомогательная функция для модульного тестирования сервисов Angular, зависящих от обновлённых сервисов AngularJS.

Эта функция возвращает класс с декоратором NgModule, настроенный для связывания инжекторов Angular и AngularJS без необходимости фактически запускать гибридное приложение. Это упрощает и ускоряет модульное тестирование сервисов.

Используйте возвращённый класс в качестве «импорта» при настройке TestBed.

В следующем фрагменте кода мы настраиваем TestBed с двумя импортами. Ng2AppModule — это часть нашего гибридного приложения на Angular, а ng1AppModule — его часть на AngularJS.

import {TestBed} from '@angular/core/testing';
import {
  createAngularJSTestingModule,
  createAngularTestingModule,
} from '@angular/upgrade/static/testing';

import {HeroesService, ng1AppModule, Ng2AppModule} from './module';

const {module, inject} = (window as any).angular.mock;

beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [createAngularTestingModule([ng1AppModule.name]), Ng2AppModule],
    });
  });

После этого мы можем, как обычно, получать сервисы через Angular Injector. Сервисы, являющиеся обновлённым сервисом AngularJS или зависящие от него, будут создаваться по мере необходимости инжектором AngularJS $injector.

В следующем фрагменте кода HeroesService — это сервис Angular, зависящий от сервиса AngularJS titleCase.

it('should have access to the HeroesService', () => {
    const heroesService = TestBed.inject(HeroesService);
    expect(heroesService).toBeDefined();
  });

Эта вспомогательная функция предназначена для тестирования сервисов, а не компонентов. Для тестирования компонентов по-прежнему необходимо запускать гибридное приложение. Дополнительные сведения см. в разделе UpgradeModule или downgradeModule.

Полученная конфигурация не связывает дайджесты AngularJS с хуками Zone. При необходимости автор теста должен вызывать $rootScope.$apply, чтобы запускать обработчики AngularJS для асинхронных событий из Angular.

Эта вспомогательная функция настраивает глобальные переменные для хранения общих инжекторов Angular и AngularJS.

  • Вызывайте эту функцию только один раз для каждого теста.
  • Не используйте createAngularTestingModule в одном тесте вместе с createAngularJSTestingModule.

Вот пример приложения и его модульных тестов, в которых используются createAngularTestingModule и createAngularJSTestingModule.

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/upgrade/static/testing/createAngularTestingModule

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API