createAngularTestingModule
Вспомогательная функция для модульного тестирования сервисов Angular, зависящих от обновлённых сервисов AngularJS.
API
function createAngularTestingModule( angularJSModules: string[], strictDi?: boolean | undefined, ): Type<any>;
string[]коллекция имён модулей AngularJS, которые нужно включить в конфигурацию.
boolean | undefinedдолжен ли инжектор AngularJS работать в режиме strictDI.
Type<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