У меня есть довольно сложный компонент карты, созданный с помощью ngx-leaflet в большом приложении Angular 2.Я пытаюсь написать модульные тесты, но не могу понять, как заставить onMapReady()
работать в моем файле test (component.spec.ts).
Мой HTML-код для самой карты довольно прост:
<div class="map"
leaflet
[leafletOptions]="mapOptions"
[leafletLayers]="layers"
[leafletFitBounds]="fitBounds"
[leafletLayersControl]="layersControl"
[leafletLayersControlOptions]="layersControlOptions"
(leafletMapReady)="onMapReady($event)">
</div>
Соответствующий файл TS:
onMapReady(map: L.Map) {
this.leafletMap = map;
...
}
onMapReady заполнен кучей различных кодов картынекоторые наблюдаемые и т. д. Чтобы состояние карты сохранялось при переходе пользователя на другие страницы приложения, код должен быть в onMapReady
.
Мой тестовый файл, опять же, довольно стандартный.Вот фрагмент метода beforeEach
:
beforeEach(() => {
fixture = TestBed.createComponent(OspMapComponent);
component = fixture.componentInstance;
...
component.ngOnInit();
fixture.detectChanges();
});
Насколько я понимаю, включение component.ngOnInit()
в метод beforeEach
запускает весь код в методе ngOnInit
компонента.Мне нужно сделать то же самое для метода onMapReady
, но я не совсем понимаю, как обращаться с ним и его $event
объектом.
Включение component.onMapReady();
в beforeEach
дает ошибку 'Ожидаемый 1аргументы, но получил 0. 'В том числе component.onMapReady(map: L.map);
выдает ошибку «Ожидается 1 аргумент, но получено 2».Несколько вариантов этого не сработали для меня.Я попытался поместить все из onMapReady в его собственный метод и вызвать этот метод внутри onMapReady, а затем поместить этот метод в начало моего тестового файла, но это вызывает другие проблемы в моих тестах.Есть ли способ правильно запустить все содержимое onMapReady в тестовом файле?